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

时间:2017-07-14 00:07:39

标签: javascript arrays

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

[['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;
&#13;
&#13;

3 个答案:

答案 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;环

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:1)

您可以结合使用Object.keysArray.mapArray.concat

&#13;
&#13;
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;
&#13;
&#13;

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