javascript过滤器缺少数组

标签 javascript arrays filter find

我尝试使用拒绝函数查找数组中的缺失值:

var store = [0,1,2,3,4,5,6,7,8,15,16,18,20,21];
var fullArray= [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21];
function reject(array, iteratorFunction) {
    return array.filter(function(element) {
        return !iteratorFunction(element)});
}
var missingValues = reject(fullArray, function(number){
  return store.find(function(item){return number === item});
}); 
console.log(missingValues);

但我的结果显示:

[0,9,10,11,12,13,14,17,19] 

在第一个值中显示 0。 为什么会发生这种情况以及如何解决?

最佳答案

store.find 返回它找到的元素。如果那是 0,您的 iteratorFunction 将返回 0,并且 !0true因为 0 是假的。

使用 Array#includes 进行正确的存在检查不过更简洁:

var missingValues = reject(fullArray, function (number) {
  return store.includes(number);
});

关于javascript过滤器缺少数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646661/

相关文章:

javascript - 使用ajax无需刷新页面即可显示数据库记录

javascript:对斐波那契数列的偶数求和

php - 如何为 "woocommerce_add_to_cart"添加过滤器或 Hook

javascript - p5.j​​s 中向量数组的问题

Python:如果字符串包含特定关键字,则从列表中删除特定字符串

c - 重新采样声音样本,我使用什么过滤器?

java - 在 Javascript 中动态设置复选框

javascript - 在数组元素的文本中找到后替换字符串的一部分

javascript - 随 secret 码生成器 JavaScript 不工作

arrays - 在另一个用户中插入 ObjectId - Parse 和 Swift