0

我在 nodeJS 项目中使用 pdfKit - 生成 PDF。

我有一个数组,其中存储数据并用于填充正在工作的表。

但是,我无法弄清楚如何从数组中的对象中检索数据。在下面的示例中,我想检索child对象。

我需要某种循环,但不知道如何添加它!

如何创建包含子数据的表,如下所示?

var dataArray = {
id: 12332,
products: [{
      price: '10',
      amount: '20',
      child: [{ color: 'red', id: 101},{ color: 'green', id: 103}]
    }, {
      price: '55',
      amount: '23',
      child: [{ color: 'black', id: 106}]
    }]

}

我试图让我的桌子看起来像:

    | price | amount |
    ------------------
    | 10.   | 20.    |
    ------------------
    ||  red   101   ||
      --------------
    ||  green  103  ||
    ------------------
    | 10.   | 20.    |
    ------------------
    ||  black   106 ||
      --------------

到目前为止,这是我的 JS 代码:

let i,
   invoiceTableTop = 330;

generateTableRow(
   doc,
   invoiceTableTop,
   "price",
   "amount",
);
generateHr(doc, invoiceTableTop + 20);


for (i = 0; i < dataArray.products.length; i++) {
   const item = dataArray.products[i];
   const position = invoiceTableTop + (i + 1) * 30;

   generateTableRow(
      doc,
      position,
      item.price,
      item.amount
   );

}

function generateHr(doc, y) {
   doc
      .strokeColor("#aaaaaa")
      .lineWidth(1)
      .moveTo(50, y)
      .lineTo(550, y)
      .stroke();
}

function generateTableRow(doc, y, c1, c2) {
   doc
      .fontSize(10)
      .text(c1, 50, y)
      .text(c2, 150, y)
}
4

1 回答 1

0

您需要一个内部循环来遍历颜色数组。

一旦你有了你的item对象,循环遍历它:

for (i = 0; i < item.child.length; i++) {
    let child = item.child[i];
    let color = child.color;
    let id = child.id;
    // do whatever with these values
}
于 2019-09-02T00:44:39.910 回答