如何将对象的对象转换为对象数组?

时间:2017-06-03 03:48:55

标签: javascript arrays object

我的对象看起来像{{},{},{},{}}

我希望它看起来像这样:

[{},{},{},{}]

4 个答案:

答案 0 :(得分:2)

如果您只使用Chrome或Firefox,则可以使用Object.values()

var o = {a:{k:1}, b:{k:2}, c:{k:3}}
var values = Object.values(o);
// [{"k":1}, {"k":2}, {"k":3}]

否则,请根据Object.keys()使用(并接受)答案。

答案 1 :(得分:1)

嗯,首先,没有对象的对象,除非你指的是属性是对象的对象。示例:{ foo: { bar: 'xyz'} }

要将此类对象转换为集合(对象数组),只需循环遍历此类

let objOfObjs = {
  foo: { xyz: 'bar'},
  bar: { abc: 'foo'}
}, collection = [];

Object.keys(objOfObjs).forEach(key => collection.push(objOfObjs[key]));

console.log(collection); //[ { xyz: 'bar' }, { abc: 'foo' } ]

Repl:https://repl.it/I4MS

答案 2 :(得分:1)

var obj = { 'a' : {}, 'b': {}, 'c': {}, 'd': {} }
var list = [];
Object.keys(obj).forEach(function(key) {
    list.push(obj[key]);
});

或更简单

   var list = Object.values(obj);

答案 3 :(得分:0)

如果您正在使用jQuery,则可以使用$ .each()方法遍历原始对象。

否则,您可以尝试for循环:



var originalObject = { 
    "key1": { "obj1Key": "obj1Value" },
    "key2": { "obj2Key": "obj2Value" },
    "key3": { "obj3Key": "obj3Value" } 
}

var newArray = [];

for (var key in originalObject) {
    newArray.push(originalObject[key]);
}

console.log("New Array: " + newArray);