使用Array of array to object - javascript和Convert an array to an array of objects作为指导我尝试编写一个导致的函数 获取这个数组列表数组:
var list = [['name', 'Sparky'], ['breed', 'lab'], ['age', 4]];
并将其转换为:
{
name : 'Sparky'
breed : 'lab',
age : 4
}
但是,当我运行以下代码时:
var list = [
['name', 'Sparky'],
['breed', 'lab'],
['age', 4]
];
function toObjects(data) {
var keys = data.shift(),
i = 0,
k = 0,
obj = null,
output = [];
for (i = 0; i < data.length; i++) {
obj = {};
for (k = 0; k < keys.length; k++) {
obj[keys[k]] = data[i][k];
}
output.push(obj);
}
return output;
}
var data = [
['name', 'Sparky'],
['breed', 'lab'],
['age', 4]
];
console.log(toObjects(data))
&#13;
我明白了:
console.log(toObjects(data)); //=>
[ { name: 'breed', Sparky: 'lab' },{ name: 'age', Sparky: 4 } ]
但是我需要输出没有额外的数组[]并且还要列出这样的单个文件:
{
name : 'Sparky'
breed : 'lab',
age : 4
}
有什么建议吗?谢谢,麻烦您了!
答案 0 :(得分:2)
我会使用Array.prototype.reduce来执行转换以及参数destructing。看一下,代码非常简单:)
let list = [
['name', 'Sparky'],
['breed', 'lab'],
['age', 4]
];
function toObjects(data) {
// reduce iterates through every element in the `data` array
// and accumulates it into the object
let initialValue = {};
return data.reduce((obj, [key, value]) => {
obj[key] = value;
return obj;
}, initialValue); // this could be in-lined with `{}`
}
var data = [
['name', 'Sparky'],
['breed', 'lab'],
['age', 4]
];
console.log(toObjects(list))
答案 1 :(得分:0)
您可以使用地图功能来实现此目的
var list = [['name', 'Sparky'], ['breed', 'lab'], ['age', 4]];
var newObj = new Object();
list.forEach(function (arr) {
newObj[arr[0]] = arr[1];
});
console.log(newObj)