检查数组上的虚假值
Check for falsy values on array
我不明白为什么这段代码有效,谁能给我解释一下?
如果我删除这段条件 && arr[i]
的值 arr[5]
不要假设为假值,但如果我写那段代码已经假设 arr[5]
就像一个虚假的价值。
在函数的最后可以看到arr[5]
的值
function bouncer(arr) {
let word = []
for (let i = 0; i < arr.length; i++)
if (typeof arr[i] !== Boolean && arr[i]) {
word.push(arr[i])
}
return word;
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));
也许你可以做得更简单:-)
let arr = [false, null, 0, NaN, undefined, "", 111, "aaa"];
let x = arr.filter(i => (typeof i !== Boolean && i))
如果要检查虚假值,请尝试使用此代码
让我告诉你,假值不需要是布尔值!
例如,0 是一个虚假值,但是 typeof(0) 是数字 ..
为什么你的代码 returns 一个空数组是 if 条件,你正在检查 if typeof(arr[i]) !== Boolean && arr[i]
由于 typeof returns 字符串和布尔值被视为对象/构造函数(不是字符串),因此此条件始终为假
function bouncer(arr) {
let word = []
for (let i = 0; i < arr.length; i++)
if (arr[i]) {
word.push(arr[i])
}
return word;
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));
我不明白为什么这段代码有效,谁能给我解释一下?
如果我删除这段条件 && arr[i]
的值 arr[5]
不要假设为假值,但如果我写那段代码已经假设 arr[5]
就像一个虚假的价值。
在函数的最后可以看到arr[5]
的值
function bouncer(arr) {
let word = []
for (let i = 0; i < arr.length; i++)
if (typeof arr[i] !== Boolean && arr[i]) {
word.push(arr[i])
}
return word;
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));
也许你可以做得更简单:-)
let arr = [false, null, 0, NaN, undefined, "", 111, "aaa"];
let x = arr.filter(i => (typeof i !== Boolean && i))
如果要检查虚假值,请尝试使用此代码
让我告诉你,假值不需要是布尔值!
例如,0 是一个虚假值,但是 typeof(0) 是数字 ..
为什么你的代码 returns 一个空数组是 if 条件,你正在检查 if typeof(arr[i]) !== Boolean && arr[i]
由于 typeof returns 字符串和布尔值被视为对象/构造函数(不是字符串),因此此条件始终为假
function bouncer(arr) {
let word = []
for (let i = 0; i < arr.length; i++)
if (arr[i]) {
word.push(arr[i])
}
return word;
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));