将2值作为键和值放入obj数组中

时间:2015-10-22 09:54:29

标签: javascript

我有以下数组:

var key = [a,b,c],
val = [10,20,30];

如何生成这样的结果:

[{a:10},{b:20},{c:30}]

我坚持到这里

var final = [];
key.forEach(function(i){

});

3 个答案:

答案 0 :(得分:3)

您可以简单地遍历数组并以所需格式收集数据:

var key = ['a', 'b', 'c'];
var val = [10, 20, 30];

var result = []; 
for (var i = 0; i < key.length; i++)
{
  var obj = {};
  obj[key[i]] = val[i];
  result.push(obj);
}

document.body.innerHTML = "<pre>" + JSON.stringify(result, null, 2) + "</pre>";

但是,在我看来,您理想的格式非常不便于使用。

答案 1 :(得分:1)

基本上,在定义对象元素时,您有object.property = valueobject["property"] = value两个选项(有关详细信息,请参阅MDN)。所以在你的情况下你可以这样做 -

var key = [a,b,c],
var val = [10,20,30];

var final = [];
key.forEach(function(currentKey, index){
  final[currentKey] = val[index];
});

答案 2 :(得分:1)

您还可以将forEach循环与第二个给出索引的参数一起使用:

function combineToObjectArray(array1, array2) {
var result = [];

if ((typeof array1 === "object") && (typeof array2 === "object") && (array1.length === array2.length)) {
    array1.forEach(function (element, index) {
        var key = element,
            obj = {};
         obj[key] = array2[index];
        result.push(obj); 
    });
}
return result;

}

我创造了一个小小的小提琴来测试它:https://jsfiddle.net/wnyto2q4/11/