首页 > 解决方案 > javascript查找数组中的所有对象并将其转换为数组到数组

问题描述

我有一个包含对象的数组列表,例如地址和详细信息

输入

var arr = [
    {id: 1, name: "abc", address: {street: "some text1", pin: 879888, state: "my-state1"}, details: {section: "A", roll: 12, branch:"CSE"}},
    {id: 2, name: "xyz", address: {street: "some text2", pin: 879887, state: "my-state2"}, details: {section: "B", roll: 13, branch:"IT"}}
]

我想迭代这个数组并转换所有内部对象,使它看起来像下面

预期结果

var arr = [
    {id: 1, name: "abc", street: "some text1", pin: 879888, state: "my-state1", section: "A", roll: 12, branch: "CSE"},
    {id: 2, name: "xyz", street: "some text2", pin: 879887, state: "my-state2", section: "B", roll: 13, branch: "IT"}
]

标签: javascript

解决方案


使用map和传播运算符将简化。

或者,您可以使用没有硬编码键的通用方式。

var arr = [
  {
    id: 1,
    name: "abc",
    address: { street: "some text1", pin: 879888, state: "my-state1" },
    details: { section: "A", roll: 12, branch: "CSE" }
  },
  {
    id: 2,
    name: "xyz",
    address: { street: "some text2", pin: 879887, state: "my-state2" },
    details: { section: "B", roll: 13, branch: "IT" }
  }
];

const updated = arr.map(item => ({
  id: item.id,
  name: item.name,
  ...item.address,
  ...item.details
}));

const updatedGeneric = arr.map(item => {
  let res = {};
  Object.entries(item).forEach(([key, value]) => Object.assign(res, typeof value === "object" ? value : { [key]: value }));
  return res;
});

console.log(updated);
console.log(updatedGeneric);


推荐阅读