js两个数组合并问题

这里有两个数组,分别为

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

能否以arr1为key,arr2为value合并成新的数组对象呢?

最终效果为

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

谢谢。

阅读 7.4k
4 个回答

如果没有重复的话:

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

@沙渺 使用的underscore.js的确有这个函数,但不是_.zip(),而是_.object():

<script src="http://underscorejs.org/underscore-min.js"></script>
<script>
    var arr1 = [5, 6, 7, 8, 9];
    var arr2 = ['a', 'b', 'c', 'd', 'e'];
    console.log( _.object(arr1, arr2) );
</script>

Object {5: "a", 6: "b", 7: "c", 8: "d", 9: "e"}

const keys = ["a", "b", "c", "d"];

const values = [1, 2, 3, 4, 5, 6, 7, 8];

const mergeKeyValue = (keys, values) => 
    keys
      .slice(0, Math.min(keys.length, values.length)) // 这一步为了取出两个数组最短长度,如果不做这一步,那就需要考虑某一方不存在值的情况
      .reduce((target, key, index) => ({ ...target, [key]: values[index]}), {});

mergeKeyValue(keys, values)
// 输出:{a: 1, b: 2, c: 3, d: 4}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏