我有一个对象,其中包含不同单词的出现次数。它看起来像这样:
{
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];
}
}
答案 0 :(得分:5)
您可以使用Object.keys
和map
:
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);