簡體   English   中英

檢查數組上的虛假值

[英]Check for falsy values on array

我不明白為什么這段代碼有效有人可以向我解釋嗎?

如果我刪除這段條件&& arr[i]arr[5]的值不會假定為假值,但如果我編寫那段代碼已經假定arr[5]為假值。

可以在function的最后看到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; ""]));

如果你想檢查虛假值,試試這個代碼

讓我告訴你,虛假值不需要是布爾值!

例如,0 是一個虛假值,但是 typeof(0) 是數字。

您的代碼返回空數組的原因是 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, ""]));

也許你可以做得更簡單:-)

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

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

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM