js两个数组合并

所属:JavaScript, Learning

昨天遇到一个需求,假如现在有两组数组分别为

1
2
var arr1 = [5, 6, 7, 8, 9];
var arr2 = ['a', 'b', 'c', 'd', 'e'];

想要将上面这两组数组以arr1为key,以arr2为value合并成新数组对象
最终结果如下:

1
{ 5: 'a', 6: 'b', 7: 'c', 8: 'd', 9: 'e' }

很简单需求吧,想了很久,自己也还没写出来,很惭愧。
于是跑到 sf 上提问,很快就收到了满意的答案。

1
2
3
4
5
6
7
8
9
var arr1 = [5, 6, 7, 8, 9];
var arr2 = ['a', 'b', 'c', 'd', 'e'];
var obj = {};
for(var i=0, len=arr1.length; i<len; i++) {
obj[arr1[i]] = arr2[i];
}
console.log(obj); // Object {5: "a", 6: "b", 7: "c", 8: "d", 9: "e"}

看到了这个答案后,狠狠的给自己扇一把掌
自己的思路跟他的一样,就是不知道自己为什么要再循环一次,蠢si了…

最后结合项目本身的情况,直接使用 Underscore.js 里面的方法

1
2
3
4
var arr1 = [5, 6, 7, 8, 9];
var arr2 = ['a', 'b', 'c', 'd', 'e'];
var obj = _.object(arr1, arr2);
console.log(obj); // Object {5: "a", 6: "b", 7: "c", 8: "d", 9: "e"}

Underscore.js 里面的 _.object() 方法也写得挺简单的,找个时间把源码给翻翻看。。。

ps:感谢所有帮忙解答这个问题的人。。