我有两个像这样的数组
var arr1 = ["1", "2", "3", "4"];
var arr2 = [["a", "b", "c", "d"], ["e", "f", "g", "h"], ["i", "j", "k", "l"], ["m", "n", "o", "p"], ["q", "r", "s", "t"]];
我想做的是将两个数组合并以形成如下所示的最终输出
var newArr = [{1: "a", 2: "b", 3: "c", 4: "d"}, {1: "e", 2: "f", 3: "g", 4: "h"}, {1: "i", 2: "j", 3: "k", 4: "l"}, {1: "m", 2: "n", 3: "o", 4: "p"}, {1: "q", 2: "r", 3: "s", 4: "t"}];
因此,有效地从第二个数组中取出每个数组,然后将其与第一个数组合并以形成一个对象。
我只是想知道在 javascript 中执行此操作的最有效方法是什么?
任何帮助将不胜感激
感谢您的宝贵时间
最佳答案
假设输入始终匹配,我将从 arr2 开始:
arr2.map(x =>
但是,此时您想要的是将 x
中的 zip
值和 y
中的相应值一起压缩,所以让我们介绍一个首先是助手(我实际上将其称为 zipKeyVal
1 因为它将值从第一个参数映射到键,然后将第二个参数映射到值)。
function zipKeyVal(keys,values) {
var result = {};
for (var i = 0; i < keys.length; i++) {
result[keys[i]] = values[i];
}
return result;
}
这样,我们的解决方案就变成了:
var newArr = arr2.map(x => zipKeyVal(arr1, x));
<小时/>
1哦,显然 underscore.js 调用的是 _.object
,而 lodash zipObject
。
关于javascript - 在 JavaScript 中操作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769623/