【问题标题】:Convert nested aray into group of objects: Javacript将嵌套数组转换为对象组:Javascript
【发布时间】:2022-12-18 12:29:11
【问题描述】:

我有一个具有以下结构的对象

arr = [ {field: "f1", values: [{ count:1, value: "a"}, { count:2, value: "b"]} },
        {field: "f2", values: [{ count:3, value: "c"}, { count:4, value: "d"]}
      ]

输出应该看起来像

output = {
             f1: { name: "f1", selected: [] },
             f2: { name: "f2", selected: [] }
          }

基本上 field 中的值应该是新对象中的键,它的名称也应该与空选择数组具有相同的值

我试过的代码。

arr.map(item => { 
                 return {
                     item: {name: item, selected: []
                 }
       );

【问题讨论】:

    标签: javascript arrays ecmascript-6 ecmascript-5


    【解决方案1】:

    const arr = [
        { field: "f1", values: [{ count: 1, value: "a" }, { count: 2, value: "b" }] },
        { field: "f2", values: [{ count: 3, value: "c" }, { count: 4, value: "d" }] }
    ]
    
    const output = arr.reduce((p, { field }) => {
        p[field] = { name: field, selected: [] };
        return p;
    }, {});
    
    console.log(output);

    【讨论】:

      【解决方案2】:

      我们可以使用Array.reduce()来做

      let arr = [
          { field: "f1", values: [{ count: 1, value: "a" }, { count: 2, value: "b" }] },
          { field: "f2", values: [{ count: 3, value: "c" }, { count: 4, value: "d" }] }
      ]
      
      let result = arr.reduce((a,v) => {
        let obj = {'name':v.field, 'selected': []}
        a[v.field] = obj 
        return a
      },{})
      console.log(result)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-24
        • 2016-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-26
        • 2019-01-31
        相关资源
        最近更新 更多