ES6 - 当比较为零时,find()返回总是为真

时间:2018-03-20 09:32:33

标签: javascript ecmascript-6

这可能很愚蠢,但find()总是true返回!有什么线索的原因?

var test = [0];

!test.find((id) => {
    var comparison = 0; 
    console.log(comparison === id); 
    return comparison === id
});
// true
// true

!test.find((id) => {
    var comparison = 5; 
    console.log(comparison === id); 
    return comparison === id
});
// false
// true

顺便说一下,这个0一起发生,比较任何其他数字都可以完美运行。我可能错过了一些明显的东西......

更新

这个逻辑我用它来过滤掉另一个数字数组中的数字数组,例如:

private array1 = [0, 1, 2];
private array2 = [0, 1];

this.array1 = [...this.array1.filter((branch_id) => !array2.includes(branch_id))];

我正在使用spread运算符,因为我需要使用此类成员array1来执行其他操作。这是一个Angular / TS上下文,我不想将其带入OP。

1 个答案:

答案 0 :(得分:2)

  

有什么线索?

使用coercingfind !的输出值为布尔对立

评估为!0 => true

  

顺便说一句,这只发生在0

0 falsey值,被强制转换为与true相对应的布尔值

如果你想从另一个数字数组中过滤出一组数字,那么

var test = [0];
var comparison = 0; 
var hasValue = test.includes[comparison];