Javascript-过滤偶数

时间:2018-08-16 11:48:21

标签: javascript arrays filter

我也想在捕获零的同时过滤包含零(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

声明抓住了零?

谢谢 布拉德

6 个答案:

答案 0 :(得分:5)

您需要从Array#filter函数返回truefalse。根据返回值,它将填充返回的数组。由于条件返回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)

因为0被认为是虚假值。

您的过滤器函数实际上是为false返回0并从数组中过滤出来。

检查this以获得更深的外观。

感谢

答案 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)