我需要检查数组中是否存在数字。使用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?
答案 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)