【问题标题】:How to rename key inside a nested array?如何重命名嵌套数组中的键?
【发布时间】:2021-03-07 07:34:55
【问题描述】:

美好的一天。我已经看到其他关于如何重命名数组中的键而不是嵌套数组的问题。

以这个array = [{id: 1, data: "Data1"}, {id: 2, data: "Data2"}]数组为例,我可以用这个代码sn-p把名字data改成text

array = array_list.map(
    ({ id, data,  }) => ({
      id: id,
      text: data,
    })
  );

但是,我不知道如何在嵌套数组中重命名我的键,如下所示:

array = ([
  {
    "id": 1,
    "text": "Data1",
    "children": [{ "minor_id": 1, "minor_data": "minor data 1" }, 
        { "minor_id": 2, "minor_data": "minor data 2" }]
  }
])

我想将 minor_id 重命名为 id 并将 minor_data 重命名为 text 以便我可以将其用于 select2 请帮忙。

基本上,这是我想要的输出:

SO Select2 Sample

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    请在下面找到所需的方法:-

    function modify(array) {
        return array.map((item) => {
            const { children } = item
            if (children.length) {
                return {
                    ...item,
                    children: children.map(({ minor_id, minor_data }) => ({
                        id: minor_id,
                        text: minor_data
                    }))
                }
            }
            return { ...item }
        })
    }
    

    【讨论】:

    • @rod:如果这能以最佳方式解决您的问题,请接受答案。
    【解决方案2】:

    children 使用嵌套的map()

    const arr = ([
      {
        "id": 1,
        "text": "Data1",
        "children": [{ "minor_id": 1, "minor_data": "minor data 1" }, 
            { "minor_id": 2, "minor_data": "minor data 2" }]
      }
    ])
    
    const res = arr.map(({children, ...other}) => {
        children = children.map(({minor_id:id , minor_data:text}) => ({id, text}))
        return {...other, children };
    })
    
    console.log(res)

    【讨论】:

      【解决方案3】:

      这是你给定的数组

      let array = ([
          {
            "id": 1,
            "text": "Data1",
            "children": [{ "minor_id": 1, "minor_data": "minor data 1" }, 
                { "minor_id": 2, "minor_data": "minor data 2" }]
          }
        ]);
      

      可以这样解析

      for (let i = 0; i < array.length; i++) {
          array[i].children.map(({minor_id, minor_data}) =>  ({id: minor_id, text: minor_data}));
            
        }
      

      【讨论】:

      • 建议你试试这个。 map() 不会改变原始数组,而是返回一个新数组,您不会将其用于任何事情
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多