这可能很愚蠢,但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。
答案 0 :(得分:2)
有什么线索?
使用coercing
,find
!
的输出值为布尔对立。
评估为!0
=> true
。
顺便说一句,这只发生在0
0
是 falsey值,被强制转换为与true
相对应的布尔值
如果你想从另一个数字数组中过滤出一组数字,那么
var test = [0];
var comparison = 0;
var hasValue = test.includes[comparison];