成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

_Zhao / 815人閱讀

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

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

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

引用自 MDN:

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

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

falsy 有時(shí)寫作 falsey

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

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

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

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( )

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

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

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

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

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

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

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

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

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

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

我們?cè)賮碚務(wù)勀莻€(gè)將每個(gè)元素轉(zhuǎn)換為布爾值的提示。這是一個(gè)很好的提示,因?yàn)槲覀兛梢杂?.filter() 返回只有真值(truthy)的數(shù)組。

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

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

這對(duì)我們非常有用,因?yàn)槲覀儚闹噶钪兄乐挥?false,null0,""undefinedNaN 在 JavaScript 中是虛值。其他每一個(gè)值都是真值。知道如果我們將輸入數(shù)組中的每個(gè)值都轉(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]);

如果你有其他解決方案或建議,請(qǐng)?jiān)谠u(píng)論中分享!

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

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

12個(gè)令人驚嘆的CSS實(shí)驗(yàn)項(xiàng)目

必須要會(huì)的 50 個(gè)React 面試題

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

11 個(gè)最好的 JavaScript 動(dòng)態(tài)效果庫

CSS Flexbox 可視化手冊(cè)

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

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

CSS粘性定位是怎樣工作的

一步步教你用HTML5 SVG實(shí)現(xiàn)動(dòng)畫效果

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

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

8 個(gè)給前端的頂級(jí) VS Code 擴(kuò)展插件

Node.js 多線程完全指南

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/103693.html

相關(guān)文章

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

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

    yuanzhanghu 評(píng)論0 收藏0
  • Licia 支持小程序的 JS 工具庫

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

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

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

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

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

    fantix 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<