您好,有人可以帮助我使用javascript。我有年龄年龄段的商店列表。
age = [5, 5, 13, 5, 13];
sumAge 来计算重复年龄。
sumAge = age.reduce((acc, datum) => {
let count= acc[datum];
acc[datum] = count === undefined ? 1 : ++count;
return acc;
}, {});
console.log(sumAge);
我想让我的结果像这样:
{
age:5,
value: 3
},
{
age:13,
value: 2
}
代替这个。
{
5: 3 ,
13: 2
}
答案 0 :(得分:0)
我希望得到这样的结果
问题中的结构无效,除非您要使用数组。
假设您想要一个按年龄作为键的对象(但是如果您想要 想要一个数组,请继续阅读):
const age = [5, 5, 13, 5, 13];
const sumAge = age.reduce((acc, datum) => {
let entry = acc[datum];
if (entry) {
++entry.count;
} else {
acc[datum] = {age: datum, count: 1};
}
return acc;
}, {});
console.log(sumAge);
但是,这实际上不是reduce
的用例,它过于复杂。只需使用简单的for-of
循环:
const age = [5, 5, 13, 5, 13];
const sumAge = {};
for (const datum of age) {
let entry = sumAge[datum];
if (entry) {
++entry.count;
} else {
sumAge[datum] = {age: datum, count: 1};
}
}
console.log(sumAge);
如果您想要想要一个数组,则作为Rajesh points out,只需对结果使用Object.values
:
const age = [5, 5, 13, 5, 13];
const sumAge = {};
for (const datum of age) {
let entry = sumAge[datum];
if (entry) {
++entry.count;
} else {
sumAge[datum] = {age: datum, count: 1};
}
}
console.log(Object.values(sumAge));
答案 1 :(得分:0)
您可以获取sumAge
的条目并根据需要映射它们
let age = [5, 5, 13, 5, 13];
let sumAge = age.reduce((acc, datum) => {
let count= acc[datum];
acc[datum] = count === undefined ? 1 : ++count;
return acc;
}, {});
let arrAge = Object.entries(sumAge).map(([k,v])=>({age: Number(k), count: v}))
console.log(arrAge);
答案 2 :(得分:0)
使用Object.values
let age = [5, 5, 13, 5, 13];
let sumAge = age.reduce((acc, datum) => {
acc[datum] = acc[datum] || { age: datum, value: 0 };
acc[datum].value += 1;
return acc;
}, {});
console.log(Object.values(sumAge));
答案 3 :(得分:0)
我的reduce有一个空白数组作为初始值-这成为数组累加器。如果具有密钥年龄的对象在数组中,则密钥值增加1。否则,将初始密钥值为1的密钥年龄的对象添加到数组累加器。这是我的代码
const checkAge = (acc, num) => acc.find(elem => elem.age == num);
const arr = [5, 15, 5, 5, 15].reduce((acc,num) => {
let idx = acc.indexOf(checkAge(acc, num))
if(idx >= 0) acc[idx].value += 1;
else acc.push({age: num, value: 1});
return acc;
}, []);
console.log(arr); //returns [{age: 5, value: 3}, {age:13, value: 2}]