为什么布尔值false小于布尔值true?

时间:2019-03-24 09:44:15

标签: javascript arrays boolean

当我想用JavaScript *解决排序问题时,我发现 false布尔值 true布尔值糟。为什么?

我尝试了以下内容:

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 个答案:

答案 0 :(得分:1)

false强制0 true

1

答案 1 :(得分:0)

强制类型。

要评估>的结果,JS将布尔值强制为数字。 True变为1,False变为0。

答案 2 :(得分:0)

这是因为(?<!\d)\d{14}(?!\d) 的值为false,而0的值为true。因为11 > 0,反之亦然。