我有以下数组:
var key = [a,b,c],
val = [10,20,30];
如何生成这样的结果:
[{a:10},{b:20},{c:30}]
我坚持到这里
var final = [];
key.forEach(function(i){
});
答案 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 = value
或object["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/