javascript对象解析和创建新的对象数组

时间:2018-05-07 21:04:01

标签: javascript arrays

我有以下对象。

{
  itemName: [ 'hard drive', 'fafa' ],
  itemValue: [ '383.00', '565' ],
  itemQuantity: [ '61626', '65' ],
}

如何将它转到下面的这个对象数组?

    {
        items: [
            {itemName : 'hard drive', itemValue : '383.00', itemQuantity : '61626'},
            {itemName : 'fafa', itemValue : '565', itemQuantity : '65'},
        ]
    }

2 个答案:

答案 0 :(得分:4)

使用Object.entries()从对象获取键/值对(条目)。使用Array.reduce()迭代条目。在reduce中,使用Array.forEach()迭代values,并检查当前索引(result)中结果数组(index)中是否存在对象,如果不添加一个空的。将当前密钥(key)和当前密钥(value)添加到对象。



const data = {
  itemName: [ 'hard drive', 'fafa' ],
  itemValue: [ '383.00', '565' ],
  itemQuantity: [ '61626', '65' ],
};

const result = Object.entries(data)
  .reduce((result, [key, values]) => {
    values.forEach((value, index) => {
      if(!result[index]) result[index] = {};
      
      result[index][key] = value;
    });
  
    return result;
  }, []);
  
console.log({ items: result });




答案 1 :(得分:1)

你可以简单地循环它,以获得直接的解决方案:

const object = {
  itemName: [ 'hard drive', 'fafa' ],
  itemValue: [ '383.00', '565' ],
  itemQuantity: [ '61626', '65' ],
};

const items = [];
for (let i = 0; i < object.itemName.length; i += 1) {
  items.push({
    itemName: object.itemName[i],
    itemValue: object.itemValue[i],
    itemQuantity: object.itemQuantity[i],
  });
}

console.log(items);