<分区>
给定一个具有不同数据类型的数组。我编写了一个函数来查找那些 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);
}
但是,有一个问题:
一.)
In case of Input: bouncer([7, "ate", "", false, 9])
It returns: [ 7, 'ate', false, 9 ]
But it should return: [7, "ate", 9]
二.)
In case of input: `bouncer([false, null, 0, NaN, undefined, ""]);`
It returns: [ null, NaN, '' ]
But it should return: []
我不明白为什么它会返回 boolean 假值,如 NaN
或 null
。但它正确地拼接空字符串 (""
) 或 undefined
等值。
而且我也不明白,为什么在第一种情况下它返回 false
(这不是故意的),但在第二种情况下它不返回 false
.
非常感谢您的澄清。