0
我很好奇,为什么否则,如果在过滤方法语句不返回任何东西:为什么if语句不会返回布尔类型和对象类型的值?
var moveZeros = function (arr) {
const nonZeros = arr.filter(value => {
if (value !== 0) return value
else if (typeof value === 'boolean') return value
else if (typeof value === 'object') return value
})
const zeros = arr.toString().match(/0/g).map(Number)
const newArr = nonZeros.concat(zeros)
return newArr
}
另外,我也想知道为什么我得到类似的效果,当我试图筛选出零从一个数组:
const zeros = arr.filter(value => {
if (value === 0) return value
})
这里是一个样本阵列测试功能:
[ 0, 1, null, 2, false, 1, 0 ]
感谢您的帮助!
你到底去做? 'filter'需要一个布尔值,你不需要返回值 – Psidom
该函数的目的是将数组末尾的所有零移动,同时保留其他元素的顺序。这只是一个练习,但我想知道为什么过滤方法的行为如此。 –
因为'0'是'falsey'。所以当你做'返回0'时,它和'return false'是一样的,这意味着它不会被添加。 – epascarello