Je suis curieux de savoir pourquoi l'autre si les déclarations dans la méthode du filtre ne retournent pas quoi que ce soit:Pourquoi les instructions if ne renvoient-elles pas les valeurs de type boolean et object?
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
}
De plus, je voudrais aussi savoir pourquoi je reçois un effet similaire lorsque je tente de filtrer les zéros à partir d'un tableau:
const zeros = arr.filter(value => {
if (value === 0) return value
})
Voici un tableau d'échantillons pour tester la fonction:
[ 0, 1, null, 2, false, 1, 0 ]
Merci pour toute aide!
Qu'est-ce que vous essayez faire? 'filter' attend un booléen, vous n'avez pas besoin de retourner la valeur – Psidom
Le but de la fonction est de déplacer tous les zéros à la fin du tableau, tout en préservant l'ordre des autres éléments. C'est juste un exercice, mais je veux savoir pourquoi la méthode du filtre se comporte de cette façon. –
parce que '0' est' falsey'. Donc quand vous faites 'return 0', c'est la même chose que' return false', ce qui veut dire que ça ne va pas être ajouté. – epascarello