<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          8種現(xiàn)代數(shù)組方法,每個(gè)開發(fā)人員都應(yīng)該知道

          共 4780字,需瀏覽 10分鐘

           ·

          2021-04-19 10:13

          英文 | https://javascript.plainenglish.io/8-modern-array-methods-that-every-developer-should-know-416855e01757
          翻譯 | 小愛
          在用代碼執(zhí)行數(shù)組操作時(shí),你是否經(jīng)想過,關(guān)于數(shù)組執(zhí)行,有沒有更加簡單的辦法?
          在JavaScript中,我們可以使用各種非常有用的數(shù)組方法。正確使用它們后,只需幾行代碼,便可以幫助你實(shí)現(xiàn)你想要的效果。
          在這里,我研究了8種數(shù)組方法,與你一起來分享一下,希望這些方法可以大大減少你的工作量。
          那讓我們現(xiàn)在開始吧。

          1、Map

          Map方法允許你使用指定的操作將現(xiàn)有數(shù)組轉(zhuǎn)換為新數(shù)組。
          var numbers = [4, 9, 16, 25];var x = numbers.map(v=> 2*v)console.log(x)console.log(numbers)

          該map方法將返回一個(gè)新數(shù)組,并將其存儲(chǔ)在變量“ x”中。原始數(shù)組“數(shù)字”將保持不變。

          上面的代碼輸出:

          [8,18,32,50] // x[4,9,16,25]  // numbers

          2、Find

          這是另一個(gè)有用的功能。該find方法的作用是使我們能夠在數(shù)組中找到特定的對(duì)象。它的語法與map方法類似,除了我們必須根據(jù)某些特定的檢查返回true或false之外。

          第一次返回true時(shí),此方法就停止對(duì)數(shù)組進(jìn)行循環(huán)迭代。

          但需要注意的是,此方法只能獲取查詢匹配到的第一個(gè)元素,返回一次,不能查詢所有查詢匹配到的元素。

          示例如下:

          var data = [  {item:'Coffee', price:10},  {item:'Tea',price:12},  {item:'Shirt',price:25},  {item:'Pen',price:6},  {item:'Shirt', price:10}];var searchEle=data.find(v => v.item=='Shirt')console.log(searchEle)

          輸出:

          {  item:"Shirt",  price:25}

          如你所見,數(shù)組“ data”中有兩個(gè)對(duì)象,“ item”的值為“ Shirt”,但是,該.find()方法僅返回了符合條件的第一個(gè)對(duì)象。

          3、篩選數(shù)組

          顧名思義,此方法使我們可以過濾數(shù)組。

          與上述兩種方法一樣,此方法也不會(huì)更改原始數(shù)組。

          在上一個(gè)示例中,我們將使用相同的“數(shù)據(jù)”數(shù)組,并將過濾出價(jià)格低于10的元素。

          var data = [  {item:'Coffee', price:10},  {item:'Tea',price:12},  {item:'Shirt',price:25},  {item:'Pen',price:6},  {item:'Shirt', price:10}];var filteredArr=data.filter(v => v.price>=10)console.log(filteredArr)

          如果你看一下方法中的filter函數(shù) ,你會(huì)發(fā)現(xiàn)我們正在檢查當(dāng)前對(duì)象的'price'屬性的值是否大于等于10。

          如果是這樣,則將元素添加到我們的“ filteredArr”數(shù)組中。

          上面的代碼片段的輸出:

          [  {    "item": "Coffee",    "price": 10  },  {    "item": "Tea",    "price": 12  },  {    "item": "Shirt",    "price": 25  },  {    "item": "Shirt",    "price": 10  }]

          你可以做的另一件事是,將find( )方法來實(shí)現(xiàn)該方法的功能。但是,會(huì)有一個(gè)區(qū)別。

          使用該find方法時(shí),我們僅獲得與搜索查詢匹配的第一個(gè)元素,而使用該filter方法,我們將獲得與查詢匹配的所有元素。

          如果我們使用與示例相同的示例來更好地說明這一點(diǎn)find ,那么,只有這次我們將使用該filter 方法實(shí)現(xiàn)相同的目的。

          var data = [  {item:'Coffee', price:10},  {item:'Tea',price:12},  {item:'Shirt',price:25},  {item:'Pen',price:6},  {item:'Shirt', price:10}];var searchEle=data.filter(v => v.item=='Shirt')console.log(searchEle)

          我們只需要將'find'關(guān)鍵字與'filter'交換,其余代碼保持不變。但是,輸出看起來會(huì)有所不同。

          輸出結(jié)果如下:

          [  {    "item": "Shirt",    "price": 25  },  {    "item": "Shirt",    "price": 10  }]

          如前所述,與find 方法不同,過濾器將返回函數(shù)返回true的每個(gè)對(duì)象,并且不會(huì)在第一次停止。

          4、forEach

          此方法替代了for循環(huán)。

          代替編寫整個(gè)循環(huán)語句,我們可以使用此方法來實(shí)現(xiàn)相同的效果。

          但是,此方法不返回?cái)?shù)組,而只是循環(huán)遍歷它們。

          var numbers = [4, 9, 16, 25];numbers.forEach(v=> console.log(v))

          當(dāng)你只想循環(huán)遍歷數(shù)組中的元素時(shí),這是一個(gè)好方法。

          但是,這不會(huì)阻止你執(zhí)行其他操作,例如,根據(jù)某種條件將數(shù)組的值分配給其他數(shù)組。

          var numbers = [4, 9, 16, 25];var s=[];numbers.forEach(  v=> v%2==0 ? //checking for even numbers  s.push(v*v): //adding their square to another array  null)console.log(s)

          但是,最好是使用filter方法來執(zhí)行這些操作。

          5、Every

          此方法檢查數(shù)組中的每個(gè)項(xiàng)目均符合某些特定條件。此方法返回布爾值而不是數(shù)組。

          當(dāng)你必須確保每個(gè)元素都具有某些特定的屬性或值時(shí),這將很有用。

          var data = [{name:'Science', results:'passed'},{name:'Maths',results:'failed'},{name:'Computer',results:'passed'},];var finalResult=data.every(v => v.results=='passed')console.log(finalResult) // => false

          例如,在上面的代碼段中,學(xué)生的考試結(jié)果存儲(chǔ)在數(shù)組“數(shù)據(jù)”中,要通過期末考試,他必須通過每門科目。

          因此,我們使用了該every()方法來檢查他是否通過了所有學(xué)科。

          你甚至可以檢查是否存在特定值,如下所示:

          var data = [{name:'Science', results:'passed'},{name:'Maths',}, //here results is missing{name:'Computer',results:'passed'},];var everyEle=data.every(v => v.results)console.log(everyEle) // => false

          6、Some

          如果我們要檢查某些要素是否滿足條件而不是每個(gè)要素,該怎么辦?

          這就是some 方法的來歷。

          與every 方法一樣,此方法也返回布爾值。但是,只要至少一個(gè)元素滿足條件,它就會(huì)返回true。

          var data = [{name:'Science', results:'passed'},{name:'Maths',results:'failed'},{name:'Computer',results:'passed'},];var finalResult=data.every(v => v.results=='passed')console.log(finalResult) // => true

          7、includes

          這是一種非常簡單的方法,用于檢查數(shù)組中是否包含特定元素。

          值得一提的是,該includes方法也可用于String并提供相同的功能。

          var numbers = [4, 9, 16, 25];var s=numbers.includes(4)console.log(s) // => true

          此方法還返回true或false。

          此外,你可以提供搜索開始位置以及第二個(gè)參數(shù)。

          var numbers = [4, 9, 16, 25];var s=numbers.includes(4,2)//(element,starting index)console.log(s) // => false

          8、reduce

          與到目前為止我們討論的方法相比,該方法相對(duì)復(fù)雜。

          我們已經(jīng)使用reduce 方法計(jì)算了“數(shù)據(jù)”數(shù)組中存在的元素的總價(jià)。

          請(qǐng)注意,我們?nèi)绾尾宦暶魅肿兞縼肀A艨倲?shù),而是使用方法本身提供的變量。

          var data = [  {item:'Coffee', price:10},  {item:'Tea',price:12},  {item:'Shirt',price:25},  {item:'Pen',price:6},  {item:'Shirt', price:10}];var totalPrice=data.reduce((total,current) => {  return current.price+total},0)console.log(totalPrice)

          對(duì)于初學(xué)者,此方法采用2個(gè)參數(shù),而不是1個(gè)。

          第一個(gè)參數(shù)是函數(shù)最后一次迭代的返回值,而第二個(gè)參數(shù)是數(shù)組中實(shí)際的當(dāng)前元素。

          因此,“ total”(第一個(gè)參數(shù))包含“ current.price”(即當(dāng)前對(duì)象的價(jià)格值)和總計(jì)之和。

          此“ total”值由函數(shù)返回,并形成函數(shù)成為下一次迭代的第一個(gè)參數(shù)。

          另外,請(qǐng)注意,我們在函數(shù)之后傳遞了另一個(gè)參數(shù)。這是默認(rèn)值。我們希望'total'從0開始,因此將0作為第二個(gè)參數(shù)傳遞給該函數(shù)。

          最后的想法

          JavaScript在客戶端腳本語言占有主導(dǎo)地位,盡管它是一種非常適合初學(xué)者的語言,但它已廣泛應(yīng)用于不同領(lǐng)域。

          JavaScript應(yīng)用程序變得越來越復(fù)雜,該語言添加了功能并進(jìn)行了自我更新以滿足需求。

          必須學(xué)習(xí)最佳的現(xiàn)代實(shí)踐,以減少工作量并使用易讀和簡單的代碼構(gòu)建重要的應(yīng)用程序。

          JavaScript提供了各種數(shù)組方法,旨在簡化與數(shù)組有關(guān)的操作。但是,重要的是要了解何時(shí)使用什么數(shù)組,以及使用此數(shù)組的目的是什么,解決什么問題。

          使用JavaScript提供的最佳功能并了解何時(shí)使用它們,還可以在技術(shù)面試中提供優(yōu)于其他功能的優(yōu)勢。

          這個(gè)就是我們學(xué)習(xí)JavaScript的目的,在工作中解決問題,

          最后,希望你喜歡這篇文章,也希望此文對(duì)你有所幫助,如果有什么問題,歡迎在留言區(qū)跟我們一起探討。

          感謝你的閱讀,編程愉快!

          學(xué)習(xí)更多技能

          請(qǐng)點(diǎn)擊下方公眾號(hào)



          瀏覽 74
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青草无码视频免费播放 | 国产一级A片在线免费观看 | 天堂网www在线资源网 | 国产一级做a爰片在线看免费 | 国产精品免费麻豆 |