Quand j'ai voulu résoudre un problème de tri en JavaScript *, j'ai découvert que le faux booléen est lees que vrai booléen . Pourquoi?
J'ai fait ce qui suit:
const todos = [{
text: 'running',
completed: false
}, {
text: 'walking',
completed: true
}, {
text: 'Studying',
completed: true
}, {
text: 'learn javascript',
completed: false
}, {
text: 'learn react',
completed: true
}]
const sortTodos = function(todo) {
todo.sort(function(a, b) {
if (a.completed < b.completed) {
return -1
} else if (b.completed < a.completed) {
return 1
} else {
return 0
}
})
}
sortTodos(todos)
console.log(todos)
Mon problème:
console.log(false < true) //return true console.log(true < false) //return false
3 Réponses :
Tapez la coercition.
Pour évaluer le résultat de > , JS contraint booléen à nombre. True devient 1, false devient 0.
false contraindre à 0 d'autre part true contraindre à 1
console.log(+true) console.log(+false)
C'est parce que false vaut 0 et true vaut 1 . Parce que 1> 0 , true> false et vice versa.
Parce qu'un booléen true est interprété comme 1, false comme 0