evs*_*vsc 6 javascript arrays reduce functional-programming
我有一个数组[22, 44, 12, 9, 4, 23, 1, 11, 10, 5, 2, 123],我需要使用reduce来创建一个如下所示的对象:
{
numbersLessThanTen: [...],
numbersGreaterThanTen: [...]
}Run Code Online (Sandbox Code Playgroud)
我有解决方案,如下:
const listOfNumbers = [22, 44, 12, 9, 4, 23, 1, 11, 10, 5, 2, 123];
const groupedBySize = listOfNumbers.reduce((total, next) => {
const less = total.numbersLessThanTen || [];
const more = total.numbersGreaterThanTen || [];
next > 10 ? total.numbersGreaterThanTen = [].concat(more, next) : total.numbersLessThanTen = [].concat(less, next);
return total;
}, {});Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么以下不起作用?它只返回初始值.当我使用.push()而不是.concat()时,它可以正常工作,但我真的很想知道为什么这种方式不起作用.谢谢!
const groupedBySize = listOfNumbers.reduce((total, next) => {
// const less = total.numbersLessThanTen || [];
// const more = total.numbersGreaterThanTen || [];
next > 10 ? total.numbersGreaterThanTen.concat(next) : total.numbersLessThanTen.concat(next);
return total;
}, {numbersGreaterThanTen: [], numbersLessThanTen:[]});Run Code Online (Sandbox Code Playgroud)