0

我不明白为什么这段代码有效,有人可以向我解释吗?

如果我删除这部分条件&& 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, ""]));

4

2 回答 2

0

如果您想检查虚假值,请尝试此代码

让我告诉你,虚假值不需要是布尔值!

例如, 0 是一个假值,但是 typeof(0) 是 number ..

您的代码返回空数组的原因是 if 条件,您正在检查 if typeof(arr[i]) !== Boolean && arr[i]

此条件将始终为假,因为 typeof 返回一个字符串,而 Boolean 被视为对象/构造函数(不是字符串)

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, ""]));
于 2022-02-21T17:59:31.070 回答
-1

也许你可以做的更简单:-)

let arr = [false, null, 0, NaN, undefined, "", 111, "aaa"];

let x = arr.filter(i => (typeof i !== Boolean && i))

在此处输入图像描述

于 2022-02-21T17:15:48.390 回答