你已經做得很好,但父母應該是對象的數組,這是有道理的。
var array = [
[
['name', 'John Smith'],
['age', 34],
['occupation', 'nurse']
],
[
['name', 'Nico Klein'],
['age', 24],
['occupation', 'engineer']
]
];
function toObject(arr) {
var obj = [];
for (var j = 0; j < arr.length; j++) {
var cur = {};
for (var i = 0; i < arr[j].length; i++) {
cur[arr[j][i][0]] = arr[j][i][1];
}
obj.push(cur);
}
return obj;
}
var result = toObject(array);
console.log(result);
輸出將在順序:
[
{
"name": "John Smith",
"age": 34,
"occupation": "nurse"
},
{
"name": "Nico Klein",
"age": 24,
"occupation": "engineer"
}
]
而且它已經從原來的陣列中的所有記錄。如果您仍想將結果數組轉換爲對象,請參閱Convert Array to Object。
var array = [
[
['name', 'John Smith'],
['age', 34],
['occupation', 'nurse']
],
[
['name', 'Nico Klein'],
['age', 24],
['occupation', 'engineer']
]
];
function toObject(arr) {
var obj = [];
for (var j = 0; j < arr.length; j++) {
var cur = {};
for (var i = 0; i < arr[j].length; i++) {
cur[arr[j][i][0]] = arr[j][i][1];
}
obj.push(cur);
}
return obj;
}
var result = toObject(array);
var resObj = result.reduce(function(acc, cur, i) {
acc[i] = cur;
return acc;
}, {});
console.log(resObj);
的最終目標輸出將爲您提供:
{
"0": {
"name": "John Smith",
"age": 34,
"occupation": "nurse"
},
"1": {
"name": "Nico Klein",
"age": 24,
"occupation": "engineer"
}
}
它似乎沒有合理的創建一個對象從這些數據。一組對象會更有意義。 –
好吧......每個第三級對都有名字,年齡,職業......所以當然你只會得到最後一個...你需要一組對象作爲你的最終輸出,而不是一個對象......或者對每個「person」使用一些其他的「key」,然後在那個「key」中有一個對象 –
這是因爲'arr [j] [i] [0]'每次迭代都是相同的值,所以它只是覆蓋現有的值。例如'name'就是這樣做:'obj.name ='John Smith''然後'obj.name ='Nico Klein''。 –