Javascript Can';t删除数组中的所有布尔==false
给定具有不同数据类型的数组。我编写了一个函数来查找那些Javascript Can';t删除数组中的所有布尔==false,javascript,arrays,boolean,splice,Javascript,Arrays,Boolean,Splice,给定具有不同数据类型的数组。我编写了一个函数来查找那些false的值,并返回不带falsy值的数组 例如: [7, "ate", "", false, 9] should return [7, "ate", 9]. 这是我当前的代码: function bouncer(arr) { for (var i = 0; i < arr.length; i++) { if (Boolean(arr[i]) == false) {
false
的值,并返回不带falsy
值的数组
例如:
[7, "ate", "", false, 9] should return [7, "ate", 9].
这是我当前的代码:
function bouncer(arr)
{
for (var i = 0; i < arr.length; i++)
{
if (Boolean(arr[i]) == false)
{
arr.splice(i, 1);
}
}
console.log(arr);
}
II.
我不明白为什么它会返回布尔值false,比如NaN
或null
。但它正确地拼接了空字符串(“
)或未定义的值
我也不明白,为什么在第一种情况下它返回false
(这不是故意的),但在第二种情况下它不返回false
非常感谢您的澄清。只需像这样使用即可
过滤器在这里所做的是仅当它为true时才在输出数组中添加值
让arr=[false,null,0,NaN,undefined,”,1123];
设op=arr.filter(值=>value);
console.log(op)
您几乎完成了,但是最好是检查哪些值是错误的,而不是比较它们,所以这个函数可以完成这个任务
const getNonFalsyValues = (arr) => {
return arr.reduce((arr, current) => {
if (Boolean(current)) {
arr.push(current);
}
return arr;
}, []);
}
我希望它能帮助您。在JavaScript中,一些值的计算结果为false
,如null
、空字符串'
和未定义。您可以在JavaScript中查看有关评估的更多信息
此外,在比较中应使用===
而不是==
。请参阅。正如其他人所说,您可以为此使用filter()
。最短的方法是:
const数组=[false,null,true,0,NaN,undefined,”,“Hola Mundo”];
log(array.filter(Boolean))代码>
.as控制台{背景色:黑色!重要;颜色:石灰;}
。由于控制台包装器{max height:100%!important;top:0;}
JavaScript具有“falsy”的概念,因此请使用==
而不是=
。在此处阅读更多内容:除非您知道自己在做什么,否则不要更改正在迭代的数组;)检查每个步骤上的元素。(提示:删除元素后,元素会发生什么情况?)
In case of input: `bouncer([false, null, 0, NaN, undefined, ""]);`
It returns: [ null, NaN, '' ]
But it should return: []
const bouncer = (arr) => arr.filter(val => !!val);
const getNonFalsyValues = (arr) => {
return arr.reduce((arr, current) => {
if (Boolean(current)) {
arr.push(current);
}
return arr;
}, []);
}