首页 > 解决方案 > javascript。使用带有变量项的映射在数组中迭代

问题描述

对不起,如果重复了一些问题,但我搜索了很多,没有找到任何东西。我必须在js中填写表格。为此,我获取对象数组(中心)的值并应用地图。一切都很完美。

centers = [
        { 'center': 'Center 1',
          'datos': { "key1":4.67,
                     "key2":3.56
                    } 
        },

        { 'center': 'Center 2',
          'datos': { "key1":0.34,
                     "key2":5} 
                    },

        { 'center': 'Center 3',
          'datos': { "key1":3.7,
                     "key2":2.5} 
                    }
        ]

let result = centers.map(res => {
    let columns = {'column1':res.datos.key1, 'column2':res.datos.key2}
    return columns;
})

/* result =  [
  [
    { column1: 4.67, column2: 3.56 },
    { column1: 0.34, column2: 5 },
    { column1: 3.7, column2: 2.5 }
  ]
]

*/

但是,“key1 ...... key1000”项目很多,我想像这样在地图功能中实现它们

var cc = ['key1','key2','key3','key4','key5'];

let result = centers.map(res => {
    let columns = {'column1':res.datos.cc[0], 'column2':res.datos.cc[1], ...........}
    return columns;
})

但它不采用变量的值。地图可以吗?谢谢你。

标签: javascriptarraysdictionaryobjectiterator

解决方案


const centers = [{
  'center': 'Center 1',
  'datos': {
    "key1": 4.67,
    "key2": 3.56
  }
}, {
  'center': 'Center 2',
  'datos': {
    "key1": 0.34,
    "key2": 5
  }
}, {
  'center': 'Center 3',
  'datos': {
    "key1": 3.7,
    "key2": 2.5
  }
}]

const result = centers.map(res => Object.entries(res.datos).reduce((acc, [key, value]) => ({ ...acc,
  [key.replace('key', 'column')]: value
}), {}))
console.log(result)


推荐阅读