我也想在捕获零的同时过滤包含零(0)的数组。
var arr1 = [-200, -163, -26, -4, 0, 7, 76];
var evens = arr1.filter(function(x) {
if (x % 2 === 0 || x === 0) {
return x;
}
})
console.log(evens);
为什么我的“偶数”数组不能归零?如果零未归类为偶数,我的
|| x===0
声明抓住了零?
谢谢 布拉德
答案 0 :(得分:5)
您需要从Array#filter函数返回true
或false
。根据返回值,它将填充返回的数组。由于条件返回boolean
,因此您只需将返回值设置为条件即可。
var arr1 = [-200, -163, -26, -4, 0, 7, 76];
var evens = arr1.filter(function(x) {
return x % 2 === 0;
})
console.log(evens);
带有箭头功能的语法更短
var arr1 = [-200, -163, -26, -4, 0, 7, 76];
var evens = arr1.filter(x => x % 2 === 0);
console.log(evens);
答案 1 :(得分:3)
从true/false
内部返回filter
。在您的代码中,当您返回0
时,filter
会认为它是falsy
,因此在经过过滤的数组中不会得到0。
var arr1= [-200,-163, -26, -4, 0, 7,76];
var evens = arr1.filter(function(x){
return x%2===0 || x===0
})
console.log(evens);
答案 2 :(得分:1)
答案 3 :(得分:0)
数组过滤器期望返回的是布尔值而不是数字
如果需要结果值,则应为true,否则为false;
0被认为是错误值。
您可以在函数中返回true
var arr1 = [-200, -163, -26, -4, 0, 7, 76];
var evens = arr1.filter(function(x) {
if (x % 2 === 0 || x === 0) {
return true;
}
})
console.log(evens);
答案 4 :(得分:0)
const myEvennessFilter = (args) => args.filter(elem => (elem % 2) === 0);
console.log(myEvennessFilter([1,2,3,4,5,6,7,8,9]));
答案 5 :(得分:0)
要使其运行速度提高25%,请用“(elem&1)=== 0”替换“ elem%2 == 0”
// how to filter out even numbers using filter() in js
let numbers = [1,2,3,4,5,6,7];
let even_numbers = numbers.filter(elem => elem%2 == 0)