繁体   English   中英

如何在JS中将对象转换为数组列表

[英]how do I convert an object to an array list in JS

我的代码有问题,它有运行错误,我正在尝试将对象转换为数组列表。 在我的代码中,我试图在数组内部构建一个数组! 我期望具有以下返回值:

[['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); 

这应该做的把戏吗?

  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' ] ]

借助ECMAScript2017,您可以使用Object.entries或传统的“ for in”循环

 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); 

您可以只使用Object.keysArray.mapArray.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))) 

通常,应避免for...in循环。 现在有许多更好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM