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

3

我的数据

var data={
    key:value,
    key:value,
    key:value
};

预期输出
var data=[    {key:value},    {key:value},    {key:value}];

我怀疑这是否是你的数据,如果你像这样声明它,那么你的数据实际上是 var data = { key: value },所以请给我们一个可验证的代码示例。 - nozzleman
5个回答

3
你可以使用几个ES6简写来在一个表达式中产生所需的输出:
Object.keys(data).map(key => ({[key]: data[key]}))

以下代码片段演示了这一点:

const data = {
  key0:'value0',
  key1:'value1',
  key2:'value2'
};

const output = Object.keys(data).map(key => ({[key]: data[key]}));

console.log(JSON.stringify(output));


2
使用 Object.keysArray#map 方法。

var data = {
  key: 'value',
  key1: 'value',
  key2: 'value'
};

console.log(
  // get all object property names(keys)
  Object.keys(data)
  // iterate over the keys array
  .map(function(k) {
    // generate the obect and return
    var o = {};
    o[k] = data[k];
    return o;
  })
)


2

使用简单的for循环可以处理这个问题:

var data = {
    key:  'value',
    key1: 'value1',
    key2: 'value2'
};
var arr = []; 
for(var k in data){
    var o = {}; 
    o[k]=data[k]; 
    arr.push(o)
}
console.log(arr)


0
你可以使用 Object.keys 来获取 keys:
Object.keys(data)
console.log(Object.keys(data)[0]) // will print first key 

或者您可以使用 Object.values 来获取值:

Object.values(data)
console.log(Object.values(data)[0]) // will print first key value 

0

尝试以这种方式实现:

function json2array(json){
var output = [];
var keys = Object.keys(json);
keys.forEach(function(key){
    output.push(json[key]);
});
return output;}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接