javascript - 使用 ES6 将 javascript 中的对象数据数组转换为另一种形式

标签 javascript arrays ecmascript-6

所以我有以下数据结构

var data = [
   {name:'AWB ', data:[12,13 ...]},
   {name:'CTS', data:[40,53 ...]}
   ]

我有另一个映射名称的数组

var nameditems = [
    {name:'AWB', json_col:'awb_no'},
    {name:'CTS', json_col:'cts'}
 ]

从上面的示例来看,每个数组对象中的每个数据都有两个或更多项

我想将数据转换成这样

[

 {awb_no:12, cts:40},
 {awb_no:13, cts:53},
]

还有更多列,但为了简洁起见,我只包含前两列。此外,数据名称是动态的,但named_items json_col具有 key 对中的实际名称

所以我用 es6 尝试了以下操作

let resultarray = [];
const totalitems = data[0].data.length;
for (int i = 0; i < data[0].data.length; i++)
  data.forEach(item => {
    let jsoncolname = nameditems.find(col => col.name === item.name);
    console.log(jsoncolname, json_col) //how do i add as key below

    resultarray.push({}) //here am stuck
  })

最佳答案

假设 data 数组在 data 数组内的所有项目上具有相同的长度。您可以通过映射通过 name

找到的相应 datanameditems 减少到另一个数组

var data = [{
    name: 'AWB',
    data: [12, 13, 14]
  },
  {
    name: 'CTS',
    data: [40, 53, 67]
  }
]

var nameditems = [{
    name: 'AWB',
    json_col: 'awb_no'
  },
  {
    name: 'CTS',
    json_col: 'cts'
  }
]

console.log(
  nameditems.reduce(
    (items, {
      name,
      json_col: prop
    }) => data.find(item => item.name === name).data.map((value, index) => {
      const obj = items[index] || {} // pick existing item or create new
      
      obj[prop] = value // populate the prop
      
      return obj
    }),
    []
  )
)

关于javascript - 使用 ES6 将 javascript 中的对象数据数组转换为另一种形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935028/

相关文章:

JavaScript 使用正则表达式在长字符串中查找单词 "19XX"或 "18XX"

javascript - 如何删除 JSON 返回 C# 中的列名称

python - 如何拆分数组中的字符串

javascript - 如何在 JavaScript 中高效地进行数组比较

javascript - 是否可以在es6中实例化一个类并定义类似于经典构造函数的原型(prototype)属性?

javascript - 浏览器抗锯齿(平滑线条)

javascript - 切换菜单时更改导航栏背景颜色 jQuery

Javascript变量,增量函数?

c - 动态二维数组 - 分配不起作用(段错误)

javascript - 维护: Assigning numbers to constants