JavaScript some()在零时返回false

时间:2018-11-17 07:16:07

标签: javascript

我需要检查数组中是否存在数字。使用some()函数,我发现零返回假。这是一个问题,因为我正在处理大量不同的数字,零是其中之一。

var array = [0, 1, 3, 4, 5];

var test = function(element) {
  return  0;
};

console.log(array.some(test));
// expected output: true on 0 <-- getting false
// expected output: true on 1
// expected output: false on 20

简而言之,如何获得0才能返回true?

2 个答案:

答案 0 :(得分:4)

测试函数始终返回零。

var test = function(element) {
  return  element == 0
};

这样,该功能应该可以正常工作。

测试函数应返回true / false。

在您的情况下,您始终返回0,该值被评估为布尔值false。

答案 1 :(得分:3)

对于您要实现的内容,使用.includes函数可能更有意义,该函数测试数组是否包含值:

var array = [0, 1, 3, 4, 5];
console.log(array.includes(0));
console.log(array.includes(1));
console.log(array.includes(2));

尽管.includes(以及所有数组迭代方法)是一个O(N)流程-如果您需要对同一数组进行一堆测试,则可以将数组转换为{首先使用{1}},以便随后可以使用Set(通常为Set.has):

O(1)