我有一个函数,我得到一个数组,然后我将它作为一个对象返回
功能在
之下function arrayToObject(array) {
var obj = {};
for(var i = 0 ; i<array.length; i++){
for(var j = 0; j<array[i].length; j++){
console.log(array[i][j][0]
+"-"+
array[i][j][1]);
obj[array[i][j][0]] = array[i][j][1];
}
}
console.log("-----------");
console.log(obj);
}
数组是
var array = [
[
['Vehicle', 'Car'], ['Engine', 'V6'], ['Year', 2001], ['Make', 'Holden']
]
,
[
['Vehicle', 'Car'], ['Engine', 'V8'], ['Year', 2001], ['Make', 'Holden']
]
];
我称之为
arrayToObject(array);
输出是
Vehicle-Car
Engine-V6
Year-2001
Make-Holden
Vehicle-Car
Engine-V8
Year-2001
Make-Holden
-----------
{ Vehicle: 'Car', Engine: 'V8', Year: 2001, Make: 'Holden' }
它不包含之前的汽车细节
我一直在尝试使用Array.Reduce,但我无法理解如何将它用于嵌套数组。如果有一种更简单的方法可以做到这一点,那将非常有帮助。
答案 0 :(得分:0)
同一属性名称应在对象中覆盖,因此将其转换为像
这样的对象数组[{ Vehicle: 'Car', Engine: 'V8', Year: 2001, Make: 'Holden' },{ Vehicle: 'Car', Engine: 'V8', Year: 2001, Make: 'Holden' }]
如下
var array = [
[
['Vehicle', 'Car'], ['Engine', 'V6'], ['Year', 2001], ['Make', 'Holden']
]
,
[
['Vehicle', 'Car'], ['Engine', 'V8'], ['Year', 2001], ['Make', 'Holden']
]
];
var arrR = [];
array.forEach(function(ele){
var temp = {};
ele.forEach(function(innerEle){
temp[innerEle[0]] = innerEle[1]
});
arrR.push(temp);
})
console.log(arrR)
答案 1 :(得分:0)
这是使用map
和reduce
的解决方案:
let result = array.map(function(properties) {
return properties.reduce(function(acc, property) {
acc[property[0]] = property[1];
return acc;
}, {});
});
&#13;
答案 2 :(得分:-1)
我在这里使用reduce和map
制作了es6https://es6console.com/iywjoob3/
function arrayToObject(array) {
const obj = array.map(car => {
return car.map(k => ({ [k[0]]: k[1] })).reduce((p, c) => Object.assign(p, c), {})
})
console.log("-----------");
console.log(obj);
}