国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何刪除 JavaScript 數(shù)組中的虛值

_Zhao / 753人閱讀

摘要:知道如果我們將輸入數(shù)組中的每個值都轉(zhuǎn)換為布爾值,就可以刪除所有值為的元素,這就滿足了此挑戰(zhàn)的要求。

翻譯:瘋狂的技術(shù)宅
https://medium.freecodecamp.o...

本文首發(fā)微信公眾號:前端先鋒
歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章

引用自 MDN:

falsy(虛值)是在 Boolean 上下文中已認定可轉(zhuǎn)換為‘假‘的值.

JavaScript 在需要用到布爾類型值的上下文中使用強制類型轉(zhuǎn)換(Type Conversion )將值轉(zhuǎn)換為布爾值,比如:在條件語句或者循環(huán)語句中。

falsy 有時寫作 falsey

在 JavaScript 中有很多方法可以從數(shù)組中刪除元素,但是從數(shù)組中刪除所有虛值的最簡單方法是什么?為了回答這個問題,我們將仔細研究 truthy 與 falsy 值和類型強制轉(zhuǎn)換。

算法說明
從數(shù)組中刪除所有虛值。
JavaScript 中的虛值是 falsenull0""undefinedNaN
提示:嘗試將每個值轉(zhuǎn)換為布爾值。
function bouncer(arr) {
  return arr;
}

bouncer([7, "ate", "", false, 9]);
提供的測試用例

bouncer([7, "ate", "", false, 9]) 應(yīng)該返回 [7, "ate", 9]

bouncer(["a", "b", "c"]) 應(yīng)該返回 ["a", "b", "c"]

bouncer([false, null, 0, NaN, undefined, ""]) 應(yīng)該返回 []

bouncer([1, null, NaN, 2, undefined]) 應(yīng)該返回 [1, 2]

解決方案:.filter( ) 和 Boolean( )

理解問題:我們有一個作為輸入的數(shù)組。目標是從數(shù)組中刪除所有的虛值然后將其返回。

freeCodeCamp 上的好心人告訴我們,JavaScript 中的虛值是 falsenull0""undefinedNaN

他們也給了我們一個重要的提示!他們建議將數(shù)組的每個值轉(zhuǎn)換為布爾值以完成此挑戰(zhàn)。我認為這個提示很不錯!

示例/測試用例:前面提供的測試用例告訴我們,如果輸入數(shù)組只包含虛值,那么應(yīng)該只返回一個空數(shù)組。這非常簡單。

數(shù)據(jù)結(jié)構(gòu):在這里我們將堅持使用數(shù)組。

我們來談?wù)?b>.filter():

.filter()創(chuàng)建一個新數(shù)組,其中包含通過所提供函數(shù)測試的所有元素。

換句話說,.filter() 遍歷數(shù)組中的每個元素并保留通過其中某個測試的所有元素。數(shù)組中未通過該測試的所有元素都被過濾掉了 —— 被刪除了。

如果我們有一個數(shù)組并且只想保留大于 100 的數(shù)字,可以用 .filter() 來實現(xiàn):

let numbers = [4, 56, 78, 99, 101, 150, 299, 300]
numbers.filter(number => number > 100)
// returns [ 101, 150, 299, 300 ]

我們再來談?wù)勀莻€將每個元素轉(zhuǎn)換為布爾值的提示。這是一個很好的提示,因為我們可以用 .filter() 返回只有真值(truthy)的數(shù)組。

我們將通過JavaScript類型轉(zhuǎn)換來實現(xiàn)這一目標。

JavaScript 為我們提供了將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種的有用函數(shù), String()轉(zhuǎn)換為字符串,Number() 轉(zhuǎn)換為數(shù)字,Boolean() 轉(zhuǎn)換為布爾值。

例如:

String(1234)
// returns "1234"
Number("47")
// returns 47
Boolean("meow")
// returns true

Boolean() 是我們完成這個挑戰(zhàn)所需要的函數(shù)。如果提供給 Boolean() 的參數(shù)是真值,那么 Boolean() 將返回 true 。如果提供給 Boolean() 的參數(shù)是虛值,那么 Boolean() 將返回 false

這對我們非常有用,因為我們從指令中知道只有 falsenull0""undefinedNaN 在 JavaScript 中是虛值。其他每一個值都是真值。知道如果我們將輸入數(shù)組中的每個值都轉(zhuǎn)換為布爾值,就可以刪除所有值為 false 的元素,這就滿足了此挑戰(zhàn)的要求。

算法

確定 arr 中的哪些值是虛值。

刪除所有虛值。

返回僅包含真值(truthy)的新數(shù)組。

代碼

function bouncer(arr) {
  // Use filter to remove falsy elements from arr.
  let onlyTruthyValues = arr.filter(element => Boolean(element) === true)
  //                                7          Boolean(7) is true
  //                                "ate"      Boolean("ate") is true
  //                                ""         Boolean("") is false
  //                                false      Boolean(false) is false
  //                                9          Boolean(9) is true

  // Return the new array.
  return onlyTruthyValues
  //     [7, "ate", 9]
}

bouncer([7, "ate", "", false, 9]);

去掉注釋并刪除局部變量:

function bouncer(arr) {
  return arr.filter(element => Boolean(element) === true)
}

bouncer([7, "ate", "", false, 9]);

如果你有其他解決方案或建議,請在評論中分享!

本文是該系列 freeCodeCamp Algorithm Scripting 的一部分。
本文引用了 freeCodeCamp Basic Algorithm Scripting:Falsy Bouncer。
本文首發(fā)微信公眾號:前端先鋒 歡迎掃描二維碼關(guān)注公眾號,每天都給你推送新鮮的前端技術(shù)文章

歡迎繼續(xù)閱讀本專欄其它高贊文章:

12個令人驚嘆的CSS實驗項目

必須要會的 50 個React 面試題

世界頂級公司的前端面試都問些什么

11 個最好的 JavaScript 動態(tài)效果庫

CSS Flexbox 可視化手冊

從設(shè)計者的角度看 React

過節(jié)很無聊?還是用 JavaScript 寫一個腦力小游戲吧!

CSS粘性定位是怎樣工作的

一步步教你用HTML5 SVG實現(xiàn)動畫效果

程序員30歲前月薪達不到30K,該何去何從

14個最好的 JavaScript 數(shù)據(jù)可視化庫

8 個給前端的頂級 VS Code 擴展插件

Node.js 多線程完全指南

把HTML轉(zhuǎn)成PDF的4個方案及實現(xiàn)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/103693.html

相關(guān)文章

  • JS 中為啥 ['1', '7', '11

    摘要:如果我們把非布爾值作為條件呢打開控制臺并運行上述代碼,會打印說明條件為真值。在中,真值指的是在布爾值上下文中轉(zhuǎn)換后的值為真的值。兩個能夠建立元素間一一對應(yīng)的集合稱為互相對等集合。 showImg(https://segmentfault.com/img/bVbtSvt?w=720&h=360); 為了保證可讀性,本文采用音譯而非直譯。 Javascript 一直是神奇的語言。 不相信我...

    yuanzhanghu 評論0 收藏0
  • Licia 支持小程序的 JS 工具庫

    摘要:注模塊名右邊有小程序圖標即表明可以在小程序中使用。轉(zhuǎn)義字符串為合法的字符串字面量。轉(zhuǎn)義特殊字符用于構(gòu)造函數(shù)。使構(gòu)造函數(shù)繼承另一個構(gòu)造函數(shù)原型鏈上的方法。 導語 Licia 是一套在開發(fā)中實踐積累起來的實用 JavaScript 工具庫。該庫目前擁有超過 300 個模塊,同時支持瀏覽器、node 及小程序運行環(huán)境,提供了包括日期格式化、md5、顏色轉(zhuǎn)換等實用模塊,可以極大地提高開發(fā)效率。...

    DangoSky 評論0 收藏0
  • C++多態(tài)底層刨析(虛函數(shù)指針,虛函數(shù)表)

    摘要:當子類繼承了父類并且子類重寫了父類的虛函數(shù)之后,我們可以看到此時子類中虛函數(shù)指針對應(yīng)的虛函數(shù)表中存的是子類經(jīng)過重寫的函數(shù)了。 前言:相信小伙伴們在學習到C++面...

    callmewhy 評論0 收藏0
  • 避免取值時出現(xiàn)Cannot read property 'xx' of unde

    摘要:由于是以空函數(shù)為代理對象,我們可以將執(zhí)行它,觸發(fā)。中會遍歷數(shù)組依次取值,如果發(fā)現(xiàn)無法繼續(xù)取值則,跳出循環(huán)。 本文來自我的博客,歡迎大家去GitHub上star我的博客 我們在取值特別是鏈式取值的時候,常常會遇到Cannot read property xx of undefined的錯誤,如何避免這種情況的發(fā)生呢?這里有幾種方法以供參考 使用成熟的庫方法 這是最簡單的一種手段:只用引入...

    fantix 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<