这个问题在这里已经有了答案:
Easiest way to interate over a complex JSON object via Javascript
(7 个回答)
9年前关闭。
我有两个数组,一个保存键,一个保存数组,每个数组都包含值。我想创建一个对象数组,其中每个对象都将键和值配对。为此,我创建了一个数组,现在我尝试在将对象插入数组之前创建和填充对象。我的代码与此类似:
var keys = [key1, key2, key3];
var values = [
[A-value1, A-value2, A-value3],
[B-value1, B-value2, B-value3],
[C-value1, C-value2, C-value3]
];
var arrayOfObjecs = [];
for(var i=0; i<values.length; i++){
var obj = {
for(var j=0; j<values[i].length; j++){
keys[j] : values[i][j];
}
};
arrayOfObjects.push(obj);
}
最后,我希望我的 arrayOfObjects 看起来像这样:
var arrayOfObjects = [
{
key1 : A-value1,
key2 : A-value2,
key3 : A-value3
},
{
key1 : B-value1,
key2 : B-value2,
key3 : B-value3
},
{
key1 : C-value1,
key2 : C-value2,
key3 : C-value3
}
];
This question与我想做的类似,但它不允许我在对象中第二次循环。
最佳答案
您的问题实际上是关于对象属性方括号表示法:
使用 object[propertyname] 与使用 object.propertyname 相同。
var myObj = {};
myObj['x'] = 12;
console.log(myObj.x); -->> prints 12
现在在您的代码中:
var arrayOfObjects = [];
for(var i=0; i<values.length; i++){
var obj = {};
for(var j=0; j<values[i].length; j++){
obj[keys[j]] = values[i][j];
}
arrayOfObjects.push(obj);
}
回复“它做了奇怪的事情”:这段代码有效。
使用此输入:
var keys = ['key1', 'key2', 'key3'];
var values = [
[12,112, 1112],
[31, 331, 3331],
[64, 65, 66]
];
输出是:
{ {key1: 12, key2: 112, key3: 1112},
{key1: 31, key2: 331, key3: 3331},
{key1: 64, key2: 65, key3: 66} }
fiddle 在这里:
http://jsfiddle.net/fyt8A/
关于javascript - 循环从二维数组创建对象键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353505/