【问题标题】:A simple methodology to merge Array of the nested object into an array of the same object将嵌套对象的数组合并到同一对象的数组中的简单方法
【发布时间】:2021-08-24 16:58:38
【问题描述】:

我正在寻找一种简单的方法来将嵌套对象的数组合并到同一对象的数组中

输入:

const data=[
      { id: 123, name: "dave", age: 23 , address:{city:"chennai", zipcode:600001}},
      { id: 456, name: "chris", age: 23, address:{city:"cbe", zipcode:600002} },
      { id: 789, name: "bob", age: 23, address:{city:"tiruppur", zipcode:600003}},
      { id: 101, name: "tom", age: 23, address:{city:"erode", zipcode:600004} },
      { id: 102, name: "tim", age: 23, address:{city:"selam", zipcode:600005} }
    ]

需要的输出:

      { id: 123, name: "dave", age: 23, city:"chennai", zipcode:600001},
      { id: 456, name: "chris", age: 23, city:"cbe", zipcode:600002},
      { id: 789, name: "bob", age: 23, city:"tiruppur", zipcode:600003},
      { id: 101, name: "tom", age: 23, city:"erode", zipcode:600004},
      { id: 102, name: "tim", age: 23, city:"selam", zipcode:600005}
    ]

【问题讨论】:

    标签: javascript arrays string


    【解决方案1】:

    结合使用解构和扩展语法:

    const data=[{ id: 123, name: "dave", age: 23 , address:{city:"chennai", zipcode:600001}},{ id: 456, name: "chris", age: 23, address:{city:"cbe", zipcode:600002} },{ id: 789, name: "bob", age: 23, address:{city:"tiruppur", zipcode:600003}},{ id: 101, name: "tom", age: 23, address:{city:"erode", zipcode:600004} },{ id: 102, name: "tim", age: 23, address:{city:"selam", zipcode:600005} }];
    
    const result = data.map(({address, ...rest}) => ({...rest, ...address}));
    
    console.log(result);

    【讨论】:

      【解决方案2】:

      您可以使用Object.entries提取address属性中的每个属性及其值并将其分配给父对象,然后删除address属性。

      const data=[{id:123,name:"dave",age:23,address:{city:"chennai",zipcode:600001}},{id:456,name:"chris",age:23,address:{city:"cbe",zipcode:600002}},{id:789,name:"bob",age:23,address:{city:"tiruppur",zipcode:600003}},{id:101,name:"tom",age:23,address:{city:"erode",zipcode:600004}},{id:102,name:"tim",age:23,address:{city:"selam",zipcode:600005}}];
      
      const result = data.map(e => (Object.entries(e.address).forEach(f => e[f[0]] = f[1]), delete e.address, e))
      console.log(result)

      【讨论】:

      • 您能解释一下为什么在原始数组已经变异的情况下在这里使用.map吗?
      【解决方案3】:

      let data = [
          { id: 123, name: "dave", age: 23, address: { city: "chennai", zipcode: 600001 } },
          { id: 456, name: "chris", age: 23, address: { city: "cbe", zipcode: 600002 } },
          { id: 789, name: "bob", age: 23, address: { city: "tiruppur", zipcode: 600003 } },
          { id: 101, name: "tom", age: 23, address: { city: "erode", zipcode: 600004 } },
          { id: 102, name: "tim", age: 23, address: { city: "selam", zipcode: 600005 } }
      ]
      
      data = data.map((node) => ({ id: node.id, name: node.name, age: node.age, city: node.address.city, zipcode: node.address.zipcode }))
      
      console.log(data)

      【讨论】:

        【解决方案4】:

        const data=[
              { id: 123, name: "dave", age: 23 , address:{city:"chennai", zipcode:600001}},
              { id: 456, name: "chris", age: 23, address:{city:"cbe", zipcode:600002} },
              { id: 789, name: "bob", age: 23, address:{city:"tiruppur", zipcode:600003}},
              { id: 101, name: "tom", age: 23, address:{city:"erode", zipcode:600004} },
              { id: 102, name: "tim", age: 23, address:{city:"selam", zipcode:600005} }
            ];
            
        const result = data.map(item => ({id: item.id, name: item.name, age: item.age, ...item.address}));
        
        console.log(result);

        【讨论】:

        • 请避免仅使用代码回答。描述有助于所有用户理解您的答案背后的原因
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        • 1970-01-01
        • 2021-04-21
        • 1970-01-01
        • 2021-11-17
        • 2018-09-13
        • 2021-12-04
        相关资源
        最近更新 更多