我有一个这样的随机整数数组:[ 1, 2, 3, 4, 0 ],我需要根据wanted条件返回一个新的包含奇数或偶数的数组。

我尝试了以下过滤方法:

const result = array.filter(item => {
    const test = item % 2;
    if(wanted === 'odd' && test > 0) return item;
    if(wanted === 'even' && test === 0) return item;
  })


并曾预期此方法可以正常工作,但当[2, 4]为偶数时,它只会返回[0, 2, 4],而永远不会返回wanted

对于为什么会这样的任何想法,将不胜感激。

最佳答案

您需要从过滤器回调而不是项目中返回布尔值。当您退回该商品时,它通常可以工作,但是如果该商品为零,则将其解释为false



let arr = [ 1, 2, 3, 4, 0 ]
let wanted = 'even'
const result = arr.filter(item => {
    const test = item % 2;
    if(wanted === 'odd' && test > 0) return true;
    if(wanted === 'even' && test === 0) return true;
  })
console.log(result)





您可以简化任何仅返回测试创建的布尔值的操作:



let arr = [ 1, 2, 3, 4, 0 ]
let wanted = 'even'
const result = arr.filter(item => {
    if (wanted === 'odd') return item % 2
    if (wanted === 'even') return !(item % 2)
  })
console.log(result)

08-04 12:14