给定一个包含不同数据类型的数组。我编写了一个函数来查找那些值为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);
}
然而,有一个问题: I.)
In case of Input: bouncer([7, "ate", "", false, 9])
It returns: [ 7, 'ate', false, 9 ]
But it should return: [7, "ate", 9]
II.)
In case of input: `bouncer([false, null, 0, NaN, undefined, ""]);`
It returns: [ null, NaN, '' ]
But it should return: []
我不明白为什么返回布尔false值,例如NaN
或null
。但它可以正确地移除空字符串(""
)或undefined
。
并且我也不理解,为什么在第一种情况下它返回false
(这不是预期的结果),而在第二种情况下却没有返回false
。
非常感谢您的澄清。
===
而不是==
。在此处阅读更多信息:https://developer.mozilla.org/en-US/docs/Glossary/Falsy - Dai