有一个数组:

let x = [12,2,3.5,4,-29];
let squared = x.filter((a) => a>0 && Number.isInteger(a)).map((a) => a**2);


请,如何使用reduce()编写此代码?关键是-在给定数组(仅整数)中获得大于“ 0”的平方数。有任何想法吗?谢谢。

最佳答案

您可以使用conditional (ternary) operator ?:并取平方值或空数组以求累加到累加器。



var x = [12, 2, 3.5, 4, -29],
    squared = x.reduce((r, a) => r.concat(a > 0 && Number.isInteger(a)
        ? a ** 2
        : []
    ), []);

console.log(squared);





或者,正如Bergi所建议的那样,传播价值观。



var x = [12, 2, 3.5, 4, -29],
    squared = x.reduce((r, a) => a > 0 && Number.isInteger(a) ? [...r, a ** 2] : r , []);

console.log(squared);

10-06 11:36