具有键值对的Javascript对象,如何将每个对分离为单个对象?

时间:2019-01-12 14:01:25

标签: javascript json object

我有一个带有键值对的javascript对象,我想将每对作为单独的对象分开并将其推入数组中,我该怎么做?

 var obj = new Object();
 obj = {
      v1 : 'k1',
      v2 : 'k2',
      v3 : 'k3'
    }

    a =[];

Object.entries(obj).forEach(
  ([key, value]) => {
    a.push({key : value});
  });
console.log(a);

这是我的预期输出:

[{v1 : 'k1'}, {v2 : 'k2'}, {v3 : 'k3'}]

3 个答案:

答案 0 :(得分:2)

您几乎明白了。要从变量(称为Computed property names)创建动态属性,您需要在[]周围添加key。否则,它只会创建一个仅带有“键”作为key的对象:

const obj = {
  v1: 'k1',
  v2: 'k2',
  v3: 'k3'
},
a = [];

Object.entries(obj).forEach(
  ([key, value]) => {
    a.push({[key] : value});
  });
console.log(a);

或者使用map更简单:

const obj = {v1:'k1',v2:'k2',v3:'k3'}
,a = Object.entries(obj).map(([key, value]) => ({[key] : value}));

console.log(a);

答案 1 :(得分:1)

var obj =  { v1 : 'k1', v2 : 'k2', v3 : 'k3' }

var result = []
for(var i in obj) result.push([i, obj[i]])


console.log(result)

答案 2 :(得分:1)

一种更实用的方法是在对象条目上map,以产生新的对象数组。

var obj =  { v1 : 'k1', v2 : 'k2', v3 : 'k3' }

const out  = Object.entries(obj).map(([k, v]) => ({ [k]: v }));

console.log(out);