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