将单个对象转换为对象数组

时间:2017-07-14 14:53:59

标签: javascript d3.js

我有一个对象,其中包含不同单词的出现次数。它看起来像这样:

{
Word1 : 1,
Word2 : 1,
Word3 : 2,
Word4 : 3
}

我想要一个看起来像这样的数组:

[
{word:Word1, count:1},
{word:Word2, count:1},
{word:Word3, count:2},
{word:Word4, count:3},
]

我看了一下,发现这个代码循环遍历对象并获得我想要的值:

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    console.log(key + " -> " + p[key]);
  }
}

我尝试创建一个空数组并使用push来获取其中的预期值,但我似乎并没有得到它的支持。我觉得像这样的东西可以得到我想要的结果:

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    //Here is where the code should go, something like :
    myNewObject[i].word = key;
    myNewObject[i].count = p[key];
  }
}

5 个答案:

答案 0 :(得分:5)

您可以使用Object.keysmap

var obj = {
 Word1 : 1,
 Word2 : 1,
 Word3 : 2,
 Word4 : 3
}

var array = Object.keys(obj).map((key) => ({
  word: key,
  count: obj[key]
}));

console.log(array);

答案 1 :(得分:0)

您可以在reduce()上使用Object.keys



let o = {
  Word1: 1,
  Word2: 1,
  Word3: 2,
  Word4: 3
};

let arr = Object.keys(o).reduce((a, b) => a.concat({
  word: b,
  count: o[b]
}), []);

console.log(arr);




答案 2 :(得分:0)

这应该有用。

const start = {
  Word1 : 1,
  Word2 : 1,
  Word3 : 2,
  Word4 : 3
};

const finish = Object.keys(start).map(k => { word: k, count: start[k] });

答案 3 :(得分:0)

您应该为对象中的每个键推送一个对象:

var result = [];
for (var key in p) {
  if (p.hasOwnProperty(key)) {
    result.push({
      word: key,
      count: p[key]
    });
  }
}

答案 4 :(得分:0)

您可以使用Object.keys()遍历对象中的每个键。 使用map()forEach()获得所需的结果。

let o = {
  Word1: 1,
  Word2: 1,
  Word3: 2,
  Word4: 3
};

var result = [];

Object.keys(o).forEach(function(x){
  result.push({word: x, count : o[x]});
});

console.log("Result with forEach :" ,result);

var resultWithMap = Object.keys(o).map( x =>
  ({ word : x, count : o[x] }) );

console.log("Result with map :" , resultWithMap);