javascript - 如何基于两个数组创建数组

标签 javascript arrays object

我有一个对象数组,这个数组包含不同的名称。

[ "Foo", "Bar", "Test", "Other" ];

还有另一个对象数组

[ { name:"Bar", value: 159 }, { name: "Foo", value: 120 }, { name: "Other", value: 1230 } ]

我需要为它们创建一个数组,新数组包含大小为 2 的子数组,第一个索引名称,第二个索引值。 数组的顺序需要与第一个(名称数组)相同。

喜欢

[ ["Foo", 120], ["Bar", 159], ["Test", undefined], ["Other", 1230] ]

所以我尝试了这段代码,但我的输出不正确。名称顺序正确,但值顺序不正确。

var order = ["Foo", "Bar", "Test", "Other"];
var values = [{ name: "Bar", value: 159 }, { name: "Foo", value: 120 }, { name: "Other", value: 1230 }];

var array = order.map(function(name, i) {
  return [name, (values[i] && values[i].value) ];
})

console.log(array)

最佳答案

你可以拿一个Map并按需要的顺序获取元素。

var names = [ "Foo", "Bar", "Test", "Other" ],
    objects = [{ name: "Bar", value: 159 }, { name: "Foo", value: 120 }, { name: "Other", value: 1230 }],
    map = new Map(objects.map(({ name, value }) => [name, value])),
    result = names.map(name => [name, map.get(name)])

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

关于javascript - 如何基于两个数组创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396924/

相关文章:

javascript - Tablesorter 2.0 插件和带有嵌套 HTML 的表格

javascript - for循环中的SetInterval仅在最后一次执行

javascript - 为什么 .then() 在 redux Promise 中未定义?

javascript - 如何将数组的所有项值设置为0?

php - 使用对象与普通变量在 session 中存储用户信息

javascript - 无法识别 ES5 导出函数

javascript - 从第二个内部数组中获取两个值

php - $_GET ['variable' ] 到数组变量中

javascript选择更改的对象键

python - 分析对象列表中的数据