首页 > 解决方案 > 从对象数组生成特定对象

问题描述

我有一个像这样的数组,

var result = [
  {
    "sItem" : [
      "Pizza Margherita","Pizza marinara"
    ],
    "sImage" : [
   "https://assets.marthastewart.com/styles/wmax-300/d31/pizza-margherita-0606-mla102155/pizza-margherita-0606-mla102155_vert.jpg","https://www.silviocicchi.com/pizzachef/wp-content/uploads/2015/02/m-evid-672x372.jpg"
    ],
    "nQuantity" : 1,
    "eDeliveryStatus" : "n",
    "nPrice" : 215,
    "sReceiptId" : "pRjZpGzIDPpX",
  }
];

想要像对象一样,我正在通过标题数组推送数据运行一个循环。

[  
   {  
      "title":"Pizza Margherita",
      "subtitle":"Pizza Margherita",
      "quantity":1,
      "price":215,
      "currency":"INR",
      "image_url":"https://images.mcdelivery.co.in/hardcastle-restaurants-pvt-ltd/image/upload/q_auto:low,fl_lossy,w_300/v1484907263/Items/2754.png"
   },
   {  
      "title":"Pizza marinara",
      "subtitle":"Pizza marinara",
      "quantity":1,
      "price":215,
      "currency":"INR",
      "image_url":"https://www.silviocicchi.com/pizzachef/wp-content/uploads/2015/02/m-evid-672x372.jpg"
   }
]

这就是我尝试但失败的方式:(,

result.forEach(el => {
  el.sItem.forEach(el2 => {
      elementRec.push({
          "title": el2,
          "subtitle": el2,
          "quantity": el.nQuantity,
          "price": el.nPrice,
          "currency": "INR",
          "image_url": el.sImage
      })
  });
})

我知道这是错误的,但对 Javascript 来说是新的。

标签: javascriptarraysjsonobject

解决方案


你快到了。

在你身上forEach,添加一个index参数并使用它从sImage数组中检索正确的图像:

el.sItem.forEach((el2, index) => {
      elementRec.push({
          "title": el2,
          "subtitle": el2,
          "quantity": el.nQuantity,
          "price": el.nPrice,
          "currency": "INR",
          "image_url": el.sImage[index]
      })
  });

var result = [
  {
    "sItem" : [
      "Pizza Margherita",
      "Pizza marinara"
    ],
    "sImage" : [
      "https://assets.marthastewart.com/styles/wmax-300/d31/pizza-margherita-0606-mla102155/pizza-margherita-0606-mla102155_vert.jpg",
      "https://www.silviocicchi.com/pizzachef/wp-content/uploads/2015/02/m-evid-672x372.jpg"
    ],
    "nQuantity" : 1,
    "eDeliveryStatus" : "n",
    "nPrice" : 215,
    "sReceiptId" : "pRjZpGzIDPpX",
  }
];

var elementRec = [];

result.forEach(el => {
  el.sItem.forEach((el2, index) => {
      elementRec.push({
          "title": el2,
          "subtitle": el2,
          "quantity": el.nQuantity,
          "price": el.nPrice,
          "currency": "INR",
          "image_url": el.sImage[index]
      })
  });
});

console.log(elementRec);


推荐阅读