如何使用reduce在数组中组合类似的项目,并使用arr.reduce返回一个对象?



我运行了这个

let nums = [6.1, 4.2, 6.2];
let numsGroup = nums.reduce((acc, num) => {
return {...acc, [Math.floor(num)]: num}

}, {}); 

,得到如下输出//{4: 4.2, 6: 6.2}

但我需要输出{4:[4.2],6:[6.1,6.2]}

您需要为每个数字组创建/添加数组。

let nums = [6.1, 4.2, 6.2];
let numsGroup = nums.reduce((acc, num) => {
const n = Math.floor(num);
return {...acc, [n]: [...(acc[n] ?? []), num]};
}, {});
console.log(numsGroup);

差不多了,只需要将num压入数组:

let nums = [6.1, 4.2, 6.3];
let numsGroup = nums.reduce((acc, num) =>{
(acc[Math.floor(num)] ??= []).push(num);
return acc;
}, {}); 
console.log(numsGroup);

使用逗号操作符:

let nums = [6.1, 4.2, 6.2];
let numsGroup = nums.reduce((acc, num) => ( 
acc[Math.floor(num)] ? acc[Math.floor(num)].push(num) : acc[Math.floor(num)] = [num]
,acc),{}); 
console.log(numsGroup)