如何在Javascript中的一个对象中将两个数组存储为键值对?

时间:2017-06-02 20:25:47

标签: javascript arrays javascript-objects

我试图将两个数组作为键值对存储到一个对象中。由于push不能与对象一起使用,我该如何实现呢?

JAVASCRIPT

var data = {};
var array1 = ['name', 'lastname'];
var array2 = ['john','doe'];

期望的输出:

console.log(data);
data: {
     name: john,
     lastname: doe
}

3 个答案:

答案 0 :(得分:0)

您可以使用Array.prototype.reduce()

var array1 = ['name', 'lastname'];
var array2 = ['john','doe'];
var data = array1.reduce((acc, value, i) => (acc[value] = array2[i], acc), {});
console.log(data);

reduce方法的第二个参数是初始值。第一个参数是arrow function,它为array1的每个元素调用一次。 acc是初始值或前一次调用的返回值。 valuearray1的当前元素。 i是当前元素的索引。此函数将array2的匹配元素指定为acc的属性,并使用comma operator返回acc

答案 1 :(得分:0)

您可以将thisArg用于所需对象,并指定相同索引的键和值。

var data = {},
    array1 = ['name', 'lastname'],
    array2 = ['john','doe'];
    
array1.forEach(function (k, i) {
    this[k] = array2[i];
}, data);

console.log(data);

答案 2 :(得分:0)

您可以使用reduce方法,该方法接受callback方法作为参数。

var array1 = ['name', 'lastname'];
var array2 = ['john','doe'];
var data=array1.reduce(function(obj,elem,index){
    obj[elem]=array2[index];
    return obj;
},{});
console.log(data);

相关问题