首页 > 解决方案 > 映射两个数组

问题描述

我有两个数组。

let A = [{
  "id": 22,
  "name": "ABC",
  "createdDate": "2021-04-19T05:55:41.247+0000",
  "modifiedDate": null
}, {
  "id": 23,
  "name": "DEF",
  "createdDate": "2021-04-19T05:55:41.247+0000",
  "modifiedDate": null
}, {
  "id": 24,
  "name": "GHI",
  "createdDate": "2021-04-19T05:55:41.247+0000",
  "modifiedDate": null
}]

let B = [{
  "key": "selectedId",
  "value": "id"
}, {
  "key": "selectedName",
  "value": "name"
}]

我想映射这两个数组。就像下面的数组一样。

let C = [{
  selectedId: 22,
  selectedName: "ABC"
}, {
  selectedId: 23,
  selectedName: "DEF"
}, {
  selectedId: 24,
  selectedName: "GHI"
}]

下面显示了我到目前为止所尝试的内容。我不知道如何像上面的数组一样映射数据。如果有人能回答这个问题,那将是一个巨大的帮助,谢谢。

A.forEach(item => {
   B.forEach(element => {
             
   });
});

标签: javascriptarraystypescriptmapping

解决方案


您可以将条目与所需的键/值对映射。

const
    data = [{ id: 22, name: "ABC", createdDate: "2021-04-19T05:55:41.247+0000", modifiedDate: null }, { id: 23, name: "DEF", createdDate: "2021-04-19T05:55:41.247+0000", modifiedDate: null }, { id: 24, name: "GHI", createdDate: "2021-04-19T05:55:41.247+0000", modifiedDate: null}],
    keys = [{ key: "selectedId", value: "id" }, { key: "selectedName", value: "name" }],
    result = data.map(o =>
        Object.fromEntries(keys.map(({ key, value }) => [key, o[value]]))
    );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读