首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数组映射到像属性和值这样的对象?

如何将数组映射到像属性和值这样的对象?
EN

Stack Overflow用户
提问于 2018-02-26 11:10:42
回答 3查看 5.5K关注 0票数 0

我不熟悉javaScript和反应。

我有一个由对象组成的数组。我需要在AG网格中显示这个数组,所以我在这里要将这个数组映射到平面obj数组中。

注意:我不能使用jQuery..

下面是我的数组(完整的代码在代码中,请检查链接)

代码语言:javascript
复制
let realData = [
  [
    {
      "key" : "flightNumber" ,
      "label": "Flight Number",
      "value": "EK 131",
      "value-type": "String",
      "order" : 1
    },
    {        
      "key" : "flightId",
      "label": "flightId",
      "value": "1223434",
      "value-type": "String",
      "order" : 2,
      "isId": true
    },
    {

      "key": "CallSign",
      "label": "callSign",
      "value": "123",
      "value-type": "String",
      "order" : 3
    },
  ]
]

我想要的结果是

代码语言:javascript
复制
let newArray = [
    {flightNumber: 'EK 131', flightType: 'A', lastUpdate: '11223232', destOrig: 'BEY', sibtSobt: '12121333123', CallSign: '123'},
    {flightNumber: 'EK 132', flightType: 'D', lastUpdate: '11334455', destOrig: 'DEST', sibtSobt: '1234443222', CallSign: '443'}
]

请帮帮忙

链接

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-26 11:33:36

检查下面的工作代码..。

代码语言:javascript
复制
const newData = [];

realData.forEach((val) => {
  let obj = {};
  val.forEach(v => obj[v.key] = v.value);
  newData.push(obj);
});

console.log(newData);
票数 3
EN

Stack Overflow用户

发布于 2018-02-26 11:17:42

您可以使用Object.assign为单个对象映射新对象。

代码语言:javascript
复制
var data = [[{ key: "flightNumber", label: "Flight Number", value: "EK 131", "value-type": "String", order: 1 }, { key: "flightId", label: "flightId", value: "1223434", "value-type": "String", order: 2, isId: true }, { key: "CallSign", label: "callSign", value: "123", "value-type": "String", order: 3 }]],
    result = data.map(a => Object.assign(...a.map(({ key, value }) => ({ [key]: value }))));

console.log(result);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 3
EN

Stack Overflow用户

发布于 2018-02-26 11:28:37

您可以将每个数组键/值对reduce成一个对象:

代码语言:javascript
复制
const arrays = [
[
    {
      "key" : "flightNumber" ,
      "label": "Flight Number",
      "value": "EK 131",
      "value-type": "String",
      "order" : 1
    },
    {        
      "key" : "flightId",
      "label": "flightId",
      "value": "1223434",
      "value-type": "String",
      "order" : 2,
      "isId": true
    },
    {

      "key": "CallSign",
      "label": "callSign",
      "value": "123",
      "value-type": "String",
      "order" : 3
    }
]
];

const objects = arrays.map(arr => arr.reduce((acc, cur, i) => {
  acc[cur.key] = cur.value;
  return acc;
}, {}));

console.log(objects);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48987141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档