我的代码有问题它有运行错误我试图将对象转换为数组列表。在我的代码中,我试图在数组中构建一个数组!我希望有一个返回值如下:
[['name', 'Holly'], ['age' , 35], ['role', 'producer' ],
['species', 'canine'], ['name', 'Bowser'], ['weight', 45]]
感谢任何帮助或建议。
var obj1 = {
name: 'Holly',
age: 35,
role: 'producer'
};
var obj2 = {
species: 'canine',
name: 'Bowser',
weight: '45'
};
function convertObjectToList(obj) {
var arrayExt = []; // declare my external array container
var arrayInt = []; // declare my internal arrays container
var objKeys = Object.getOwnPropertyNames(obj); // returns all properties (enumerable or not) found directly upon a given object.
for (var k in obj) {
if (var i = 0; i < objKeys.length; i++);
arrayInt = [];
arrayInt.push(obj(objKeys[k]));
arrayExt.push(arrayInt);
console.log(arrayExt);
}
}
convertObjectToList(obj);
&#13;
答案 0 :(得分:3)
这应该可以解决问题吗?
var obj1 = { name: 'Holly', age: 35, role: 'producer' };
var obj2 = { species: 'canine', name: 'Bowser', weight: '45'};
function convertObj(obj) {
var result = [];
for (var key in obj) {
result.push([key, obj[key]])
}
return result;
}
console.log(convertObj(obj1))
console.log(convertObj(obj2))
给(NodeJS):
> convertObj(obj1)
[ [ 'name', 'Holly' ],
[ 'age', 35 ],
[ 'role', 'producer' ] ]
答案 1 :(得分:1)
使用ECMAScript2017,您可以使用Object.entries或传统的&#34;用于&#34;环
var obj1 = {
name: 'Holly',
age: 35,
role: 'producer'
};
var obj2 = {
species: 'canine',
name: 'Bowser',
weight: '45'
};
var arr1 = Object.entries(obj1)
console.log(arr1);
var arr2 = Object.entries(obj2)
console.log(arr2);
//traditional for in loop
var tr1 = [];
for (let iter in obj1) {
tr1.push([iter, obj1[iter]])
}
console.log(tr1);
var tr2 = [];
for (let iter in obj2) {
tr2.push([iter, obj2[iter]])
}
console.log(tr2);
&#13;
答案 2 :(得分:1)
您可以结合使用Object.keys
,Array.map
和Array.concat
function toArray(obj) {
return Object.keys(obj).map(k => [k, obj[k]]);
}
var obj1 = { name: 'Holly', age: 35, role: 'producer' };
var obj2 = { species: 'canine', name: 'Bowser', weight: '45'};
console.log(toArray(obj1).concat(toArray(obj2)))
&#13;
通常,您应该避免for...in
循环。现在有很多更好的选择。