作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
重要编辑:我不能使用 filter
- 目的是教学。
我有一个数组,我想计算其中验证 bool 值的元素的数量,仅使用 map
和 reduce
。
我已经使用 reduce
编写了一些计算数组大小的东西(即:所有 元素的数量):
const array_numbers = [12, 15, 1, 1]; // Size : 4
console.log(
array_numbers.reduce((acc) => {
return acc + 1;
}, 0)
);
现在我只想计算验证 bool 条件的元素。因此,我必须在 reduce
之前使用 map
并且 map
返回的数组的元素将只是好的元素。
所以我写了这段代码,但它不起作用...... 事实上,当我遇到一个不好的元素时,我把 null
(和 null
不幸地被算作 en 元素)。
注意:这里的 bool 条件是“元素是否偶数?(%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)
);
最佳答案
Array#filter
数组并检查长度:
const array_numbers = [12, 15, 1, 1];
const result = array_numbers.filter((n) => n % 2 === 0).length;
console.log(result);
或者使用 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);
或者,如果必须,您可以将 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);
关于javascript - 映射减少 : How to count in a collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41448344/
我是一名优秀的程序员,十分优秀!