gpt4 book ai didi

javascript - 映射减少 : How to count in a collection

转载 作者:行者123 更新时间:2023-11-29 16:06:13 25 4
gpt4 key购买 nike

重要编辑:我不能使用 filter - 目的是教学。

我有一个数组,我想计算其中验证 bool 值的元素的数量,仅使用 mapreduce

数组大小的计数

我已经使用 reduce 编写了一些计算数组大小的东西(即:所有 元素的数量):

const array_numbers = [12, 15, 1, 1]; // Size : 4
console.log(
array_numbers.reduce((acc) => {
return acc + 1;
}, 0)
);

检查 bool 条件的数组元素的计数

现在我只想计算验证 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#mapArray#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com