Почему логическое значение false меньше логического значения true? - PullRequest
0 голосов
/ 24 марта 2019

Когда я хотел решить проблему сортировки в JavaScript *, я обнаружил, что false Boolean меньше, чем true Boolean .Почему?

Я пробовал следующее:

console.log(false < true) //return true
console.log(true < false) //return false

Моя проблема:

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)

Ответы [ 3 ]

1 голос
/ 24 марта 2019

false принудительно 0 с другой стороны true принудительно 1

console.log(+true)
console.log(+false)
0 голосов
/ 24 марта 2019

Это потому, что false оценивается в 0, а true оценивается в 1.Потому что 1 > 0, true > false и наоборот.

0 голосов
/ 24 марта 2019

Тип принуждения.

Чтобы оценить результат >, JS приводит логическое значение к числу. Истина становится 1, ложь становится 0.

...