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