我有一个这样的随机整数数组:[ 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)