有一个数组:
return new ResponseEntity<>(
new personResponsePayload(id, name, address),
HttpStatus.OK
);
请问,如何使用reduce()编写此代码?关键是-在给定数组(仅整数)中获取大于“ 0”的平方数。有任何想法吗?谢谢。
答案 0 :(得分:3)
您可以使用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);
答案 1 :(得分:1)
原文:
let x = [12,2,3.5,4,-29];
let squared = x.filter((a) => a>0 && Number.isInteger(a)).map((a) => a**2);
现在,考虑一下我们要使用reduce方法要做的事情。
我们想要一个数组并返回一个新数组,该数组由原始数组中所有正整数的平方组成。
这意味着我们在reduce中的累加器应该是一个数组,因为我们在最后返回一个数组。这也意味着我们需要包括逻辑控制流,以便仅将累加正整数的元素添加到累加器中。
请参见下面的示例:
const x = [12,2,3.5,4,-29];
const squared = x.reduce((acc, val) => val > 0 && val % 1 === 0 ? acc.concat(val ** 2) : acc, []);
console.log(squared);
// [144, 4, 16]