如何将键值对转换为新的键值对javascript

如何将键值对转换为新的键值对javascript,javascript,arrays,Javascript,Arrays,您好,有人能帮我学习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); 我希望我的

您好,有人能帮我学习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
}
我想得到这样的结果

问题中的结构无效,除非您的意思是需要数组

假设您需要一个按年龄设置关键帧的对象(但如果确实需要数组,请继续读取):

const age=[5,5,13,5,13];
const sumAge=年龄减少((acc,基准)=>{
let entry=acc[基准];
如果(条目){
++条目.计数;
}否则{
acc[datum]={年龄:datum,计数:1};
}
返回acc;
}, {});

控制台日志(sumAge)您可以获取
sumAge
的条目,并根据需要映射它们

let age=[5,5,13,5,13];
让sumAge=age.reduce((acc,datum)=>{
让计数=acc[基准];
acc[基准]=计数===未定义?1:++计数;
返回acc;
}, {});
让arrAge=Object.entries(sumAge.map)([k,v])=>({age:Number(k),count:v}))

控制台日志(数组)使用
对象。值

let age=[5,5,13,5,13];
让sumAge=age.reduce((acc,datum)=>{
acc[datum]=acc[datum]|{年龄:datum,值:0};
acc【基准面】。数值+=1;
返回acc;
}, {});

log(Object.values(sumAge))My 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}]

进一步添加
sumAge=Object.entries(sumAge.map)([age,value])=>({age,value}))可能您需要执行
Object.values(sumAge)
@Rajesh-谢谢,很难说OP想要什么,但它可能是一个数组。我已经更新添加了该选项,再次感谢。年龄应该是一个数字