簡體   English   中英

javascript 過濾虛假值; Array.prototype.filter 問題

[英]javascript filtering falsey values; Array.prototype.filter problems

 //removes falsey values from the array function bouncer(arr) { return arr.filter(ele => ele); } console.log(bouncer([0, "ate", "", false, 9]));

我不明白為什么只有“ele”的條件在這里起作用。 我只是返回參數,但它不會通過 function 返回任何虛假的 arguments,所以它有效......? 為什么? 同樣,我不明白為什么我不能將該行寫為:
返回 arr.filter(ele => ele===true)
我的條件是:如果數組的一個元素為真...返回它,但這不起作用,我不明白為什么會這樣。 如果我試圖做一個像 (ele => ele>5) 這樣的過濾器,我理解代碼

只返回 "ele" 會將所有不為假的東西都評估為真,即不是0""false 如果您執行ele=>ele!=false ,您將得到與ele=>ele相同的結果

如果您使用===true那么它們都不等於 true (類型和值必須匹配true

如果你使用==true那么你仍然沒有得到任何東西,因為它們都沒有評估為真(這里的值1將通過測試)

你需要在 false 上指定條件

function bouncer(arr) {
  return arr.filter(ele => ele?true:false);
}
console.log(bouncer([0, "ate", "", false, 9]));

它之所以有效,是因為您使用的是箭頭 function。因此在您的情況下filter(ele => ele)表示您只返回真值。

現在這不會(ele => ele>5)因為您的數組包含除 integer 之外的其他值。

為了更清楚,您可以從此處閱讀箭頭 function 表達式,這些值在 javascript 中被視為虛假值。

暫無
暫無

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

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