gpt4 book ai didi

javascript - Array.prototype.filter 自动过滤掉虚假值

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:32 26 4
gpt4 key购买 nike

过滤器函数是否自动过滤掉假值,如 false、null 或 undefined?如果是这样,如何阻止它这样做。

我需要过滤掉数组中的所有 0,所以我使用了 array.filter 回调,我意识到过滤函数会删除虚假值,即使我想保留它们也是如此。有解决办法吗?

编辑:这是我的代码,进行深入比较并没有返回错误值。

function removeZero(arr) {
return arr.filter(function(element){
if(element!==0){
return element;
}
});
}

编辑 2:这是包含测试数组内容的 repl.it 链接,当我运行它时,结果过滤掉了 false、null 和 undefined。 https://repl.it/BAiK

最佳答案

使用 !== 运算符

[1,2,3,0,[],{},false,undefined].filter(function(e){return e !== 0})
// Output: [1, 2, 3, Array[0], Object, false, undefined]

!= 运算符(您不想使用)的输出进行比较

[1,2,3,0,[],{},false,undefined].filter(function(e){return e != 0})
// Output: [1, 2, 3, Object, undefined]

这是您提供的代码 https://repl.it/BAiK

var removeZeros = function (arr) {
return arr.filter(function(element){
if(element!==0){
return element; // here is the error, you need to return a boolean. (true to add element to final array, false to ignore element)
}
});
}

console.log(removeZeros([false, 1, 2, 3, null, 0, 4, undefined, 5, 0]));
// Output: [ 1, 2, 3, 4, 5 ]

你看,过滤函数的返回值需要是一个 bool 值,而不是你要返回的元素。当你返回 false 时,该元素不会添加到最终数组中,当你返回 true 时,返回正在处理的元素。查看我的修改,您的代码已修复

这是你的代码修复

var removeZeros = function (arr) {
return arr.filter(function(element){
return element !== 0 // this returns a boolean
});
}

console.log(removeZeros([false, 1, 2, 3, null, 0, 4, undefined, 5, 0]));
// Output: [ false, 1, 2, 3, null, 4, undefined, 5 ]

关于javascript - Array.prototype.filter 自动过滤掉虚假值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com