Jar*_*ler 3 javascript arrays reduce mapreduce
重要编辑:我不能使用filter- 目的是教学。
我有一个数组,我想在其中仅使用map和来计算其验证布尔值的元素的数量reduce。
我已经写了一些计算数组大小的东西(即:其所有元素的数量),使用reduce:
const array_numbers = [12, 15, 1, 1]; // Size : 4
console.log(
array_numbers.reduce((acc) => {
return acc + 1;
}, 0)
);
Run Code Online (Sandbox Code Playgroud)
现在我只想计算验证布尔条件的元素。因此,我必须使用mapbefore reduce,并且 返回的数组的元素map将只是好的元素。
所以我写了这段代码,但它不起作用......事实上,null当我遇到一个不好的元素时(null不幸的是,它被算作 en 元素)。
注意:这里的布尔条件是“元素是偶数吗?(%2 == 0)”。
const array_numbers = [12, 15, 1, 1]; // Size : 4
console.log(
array_numbers.map((current_value) => {
if(current_value % 2 == 0) {
return current_value;
}
return null;
}).reduce((acc) => {
return acc + 1;
}, 0)
);
Run Code Online (Sandbox Code Playgroud)
Array#filter数组并检查长度:
const array_numbers = [12, 15, 1, 1];
const result = array_numbers.filter((n) => n % 2 === 0).length;
console.log(result);Run Code Online (Sandbox Code Playgroud)
或者使用以下方式进行计数Array#reduce:
const array_numbers = [12, 15, 1, 1, 4];
const result = array_numbers.reduce((r, n) => n % 2 ? r : r + 1, 0);
console.log(result);Run Code Online (Sandbox Code Playgroud)
或者,如果必须的话,您可以Array#map使用Array#reduce:
const array_numbers = [12, 15, 1, 1, 4];
const result = array_numbers
.map((n) => n % 2 === 0 ? 1 : 0) // map to 1 or 0 according to the condition
.reduce((r, n) => r + n); // sum everything
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9659 次 |
| 最近记录: |