如何将键值对转换为新的键值对javascript
您好,有人能帮我学习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); 我希望我的
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想要什么,但它可能是一个数组。我已经更新添加了该选项,再次感谢。年龄应该是一个数字