Javascript ES6-find()在与零比较时始终返回true
这可能很愚蠢,但是Javascript ES6-find()在与零比较时始终返回true,javascript,ecmascript-6,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(c
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
来做其他事情。这是在一个角度/TS上下文中,我不想将其引入OP
有什么线索吗
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
=>真
顺便说一下,这只发生在0的情况下
0
作为一个假值,被强制为其布尔相反的true
如果要从另一个数字数组中筛选出一个数字数组,则
似乎你想要的是一些
,而不是查找
@JonasW。事实上,这正是我应该使用的函数。谢谢但是,由于问题的主题是常量true
输出,因此我将对此进行投票或接受作为正确答案。我使用此find()
从另一个数字数组中筛选出一个数字数组。您建议如何允许此筛选器正确筛选所有数字,包括零?按照说明,不是true==5
=false
?所以,!0===5
应该等于false
,对吗?这里始终是真的您要查找的输出是什么?实际上,就像@JonasW建议的那样,我正在查找some()
,只需要返回一个布尔id,该值存在于数组中。但是,我仍然不完全理解为什么我总是将true
作为输出。我甚至尝试将两个比较的值解析为字符串……如果您希望在数组中的任何项匹配条件时返回true,那么您可以使用some
。但由于我不清楚你们想要的是什么,我会等待澄清。我的回答只是解释了为什么你会得到你所得到的价值。