<acronym id="indot"><dfn id="indot"></dfn></acronym>
<span id="indot"></span>

<bdo id="indot"><meter id="indot"></meter></bdo>
<label id="indot"><samp id="indot"></samp></label>
<label id="indot"><xmp id="indot">
  • <span id="indot"><table id="indot"></table></span>
    <center id="indot"><optgroup id="indot"></optgroup></center>
  • <bdo id="indot"><meter id="indot"></meter></bdo>
      當(dāng)前位置:首頁(yè) > javascript > 正文內(nèi)容

      JS數(shù)組常用方法

      hxing6412年前 (2023-12-23)javascript2770

      JS數(shù)組常用方法:


      1.數(shù)組的復(fù)制和填充

      批量復(fù)制方法 copyWithin(),以及填充數(shù)組方法fill()。


      這兩個(gè)方法的函數(shù)簽名類(lèi)似,都需要指定既有數(shù)組實(shí)例上的一個(gè)范圍,包含開(kāi)始索引,不包含結(jié)束索引。


      使用這個(gè)方法不會(huì)改變數(shù)組的大小。


       

      1.1.fill()方法

      使用fill()方法可以向一個(gè)已有的數(shù)組中插入全部或部分相同的值。


      開(kāi)始索引用于指定開(kāi)始填充的位置,它是可選的。


      如果不提供結(jié)束索引,則一直填充到數(shù)組末尾。


      負(fù)值索引從數(shù)組末尾開(kāi)始計(jì)算。


      const array =[0,0,0,0,0];
      //填充5
      array.fill(5);
      console.log(array);
      //從索引為3的數(shù)開(kāi)始填充3
      array.fill(3,3);
      console.log(array);
      //在索引為1到3的數(shù)中填充8
      array.fill(8,1,3);
      console.log(array);

      2501855-20221216232415960-366711913.png

      1.2.copyWithin()

      copyWithin()會(huì)按照指定范圍淺復(fù)制數(shù)組中的部分內(nèi)容,然后將它們插入到指定索引開(kāi)始的位置


      const array =[0,1,0,2,0,3,0,4,0,5];
      //復(fù)制索引0開(kāi)始的內(nèi)容,插入到索引8開(kāi)始時(shí)的位置
      array.copyWithin(8);
      console.log(array);
      //復(fù)制索引5開(kāi)始的內(nèi)容, 插入到索引0開(kāi)始的位置
      array.copyWithin(0,5);
      console.log(array);
      //復(fù)制索引0到索引2的內(nèi)容,插入到索引6開(kāi)始的位置
      array.copyWithin(6,0,2);
      console.log(array);

      2501855-20221216233214130-243671504.png

      2.轉(zhuǎn)換方法

      前面提到過(guò).所有對(duì)象都有toLocaleString()、toString()和valueof()方法。


      其中,valueof()返回的還是數(shù)組本身。


      tostring()返回由數(shù)組中每個(gè)值的等效字符串拼接而成的一個(gè)逗號(hào)分隔的三字符串。


      let colors = ["red", "blue", "green"];
      console.log(colors.toString());
      console.log(colors.valueOf());
      //使用join()方法可以使用不同的分隔符
      console.log(colors.join("||"));


      2501855-20221216233941959-1769247312.png


      3.數(shù)組常用方法

      方法splice()用于創(chuàng)建一個(gè)包含原有數(shù)組中一個(gè)或多個(gè)元素的新數(shù)組。


      splice()方法可以接收一個(gè)或兩個(gè)參數(shù):返回元素的開(kāi)始索引和結(jié)束索引。


      如果只有一個(gè)參數(shù),則splice()會(huì)返回該索引到數(shù)組末尾的所有元素。


      如果有兩個(gè)參數(shù),則splice()返回從開(kāi)始索引到結(jié)束索引對(duì)應(yīng)的所有元素,其中不包含結(jié)束索引對(duì)應(yīng)的元素。


      記住,這個(gè)操作不影響原始數(shù)組。


       


      或許最強(qiáng)大的數(shù)組方法就屬splice()了,使用它的方式可以有很多種。


      splice()的主要目的是在數(shù)組中間插入元素,但有3種不同的方式使用這個(gè)方法。


      (確實(shí)強(qiáng)大)


      (1)  刪除。需要給splice()傳2個(gè)參數(shù):要?jiǎng)h除的第一個(gè)元素的位置和要?jiǎng)h除的元素?cái)?shù)量。


      可以從數(shù)組中刪除任意多個(gè)元素,比如splice(0,2)會(huì)刪除前兩個(gè)元素。


       


      (2) 插入。需要給splice()傳3個(gè)參數(shù):開(kāi)始位置、0(要?jiǎng)h除的元素?cái)?shù)量)和要插入的元素,可以在數(shù)組中指定的位置插入元素。


      第三個(gè)參數(shù)之后還可以傳第四個(gè)、第五個(gè)參數(shù),乃至任意多個(gè)要插入的元素。


      比如,splice(2,0,"red","green")會(huì)從數(shù)組位置2開(kāi)始插入字符串"red"和"green"。


       


      (3) 替換。splice()在刪除元素的同時(shí)可以在指定位置插入新元素,同樣要傳入3個(gè)參數(shù):開(kāi)始位置、要?jiǎng)h除元素的數(shù)量和要插人的任意多個(gè)元素。


      要插入的元素?cái)?shù)量不一定跟刪除的元素?cái)?shù)量一致。比如,s(2,1,"red","green")會(huì)在位置2刪除一個(gè)元素,然后從該位置開(kāi)始向數(shù)組中插入""和"green"。


      splice()方法始終返回這樣一個(gè)數(shù)組,它包含從數(shù)組中被刪除的元素(如果沒(méi)有刪除元素,則返回空數(shù)組)


      (一個(gè)方法,滿(mǎn)足三個(gè)愿望)


      試一試:


      let colors = ["red", "blue", "green"];
      colors.splice(0,1);
      console.log(colors);
      colors.splice(1,0,"black","orange");
      console.log(colors);
      colors.splice(1,1,"pink");
      console.log(colors);



      4.搜索和"判斷"方法

       4.1.搜索方法

      ECMAScript提供了3個(gè)嚴(yán)格相等的搜索方法:indexof()、lastIndexof()和includes()。


      其中,前兩個(gè)方法在所有版本中都可用,而第三個(gè)方法是ECMAScript7新增的。


      這些方法都接收兩個(gè)參數(shù):要查找的元素和一個(gè)可選的起始搜索位置。


      indexof()和includes()方法從數(shù)組前頭(第一項(xiàng))開(kāi)始向后搜索,而lastIndexof()從數(shù)組末尾(最后一項(xiàng))開(kāi)始向前搜索。

      indexof()和 lastIndexof()都返回要查找的元素在數(shù)組中的位置,如果沒(méi)找到則返回-1。


      includes()返回布爾值,表示是否至少找到一個(gè)與指定元素匹配的項(xiàng)。


       書(shū)里面居然沒(méi)寫(xiě)includes()方法的參數(shù),補(bǔ)充一下:


      const array =[1,2,3,4,5,4,3,2,1];
      console.log(array.indexOf(1));
      console.log(array.lastIndexOf(1));
      console.log(array.includes(1));
      console.log(array.indexOf(1,5));
      console.log(array.lastIndexOf(1,5));
      //從索引5開(kāi)始找"1",找到就返回true
      console.log(array.includes(1,5));



      4.2.斷言函數(shù)

      ECMAScript 也允許按照定義的斷言函數(shù)搜索數(shù)組,每個(gè)索引都會(huì)調(diào)用這個(gè)函數(shù)。


      斷言函數(shù)的返回值決定了相應(yīng)索引的元素是否被認(rèn)為匹配。

      斷言函數(shù)接收3個(gè)參數(shù):元素、索引和數(shù)組本身。


      其中元素是數(shù)組中當(dāng)前搜索的元素,索引是當(dāng)前元素的索引,而數(shù)組就是正在搜索的數(shù)組。


      斷言函數(shù)返回真值,表示是否匹配。

      find()和findIndex()方法使用了斷言函數(shù)。


      這兩個(gè)方法都從數(shù)組的最小索引開(kāi)始。


      find()返回第一個(gè)匹配的元素,findIndex()返回第一個(gè)匹配元素的索引。


      這兩個(gè)方法也都接收第二個(gè)可選的參數(shù),用于指定斷言函數(shù)內(nèi)部this的值。


      let people = [{
              name: "panghu",
              age: "80"
          },
          {
              name: "dream",
              age: "50"
          },
          {
              name: "xiaofu",
              age: "30"
          },
      ];
      console.log(people.find((element, index, array) => element.age > 49));
      console.log(people.findIndex((element, index, array) => element.age > 49));


      (感覺(jué)這個(gè)歸類(lèi)進(jìn)迭代方法也沒(méi)什么問(wèn)題)


       


      5.迭代方法


      ECMAScript為數(shù)組定義了5個(gè)迭代方法。


      每個(gè)方法接收兩個(gè)參數(shù):以每一項(xiàng)為參數(shù)運(yùn)行的函數(shù).個(gè)參數(shù):數(shù)組元素、元素索引和數(shù)組本身。


      因具體方法而異,這個(gè)函數(shù)的執(zhí)行結(jié)果可能會(huì)也可能不會(huì)影響方法的返回值。


      數(shù)組的5個(gè)迭代方法如下。


       


      (1) every():對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),如果對(duì)每一項(xiàng)函數(shù)都返回true,則這個(gè)方法返回true。


      (2) some():對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),如果有一項(xiàng)函數(shù)返回true,則這個(gè)方法返回true。這些方法都不改變調(diào)用它們的數(shù)組。


      (3) map():對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),返回由每次函數(shù)調(diào)用的結(jié)果構(gòu)成的數(shù)組。



      (4) filter():對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),函數(shù)返回true的項(xiàng)會(huì)組成數(shù)組之后返回。

      (5) forEach():對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),沒(méi)有返回值。


       


      可以說(shuō),every(),some(),和map()組成一類(lèi),他們像斷言函數(shù)


      filter()和forEach()為一類(lèi)他們則更像"迭代"操作


      重要的例子:


      const array = [1, 2, 3, 4, 5, 4, 3, 2, 1];
      //every()全部符合要求,才返回true
      console.log(array.every((element, index, array) => element > 2));
      //some()只要有一個(gè)符合要求,就返回true
      console.log(array.some((element, index, array) => element > 2));
      //map()對(duì)所有項(xiàng)調(diào)用方法,將每一次調(diào)用的結(jié)果構(gòu)成數(shù)組返回
      console.log(array.map((element, index, array) => element > 2));
      //filter()0把符合要求的篩選出來(lái)
      console.log(array.filter((element, index, array) => element > 2));
      //forEach()把符合要求的項(xiàng)進(jìn)行某些操作
      console.log(array.forEach((element, index, array) => element > 2));


      6.歸并方法


      這個(gè)沒(méi)啥好說(shuō)的,本質(zhì)上也是迭代方法的一種,多了幾個(gè)參數(shù)而已


      ECMAScript為數(shù)組提供了兩個(gè)歸并方法:reduce()和 reduceRight()。


      這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),并在此基礎(chǔ)上構(gòu)建一個(gè)最終返回值。


      reduce()方法從數(shù)組第一項(xiàng)開(kāi)始遍歷到最后一項(xiàng)。


      而 reduceRight()從最后一項(xiàng)開(kāi)始遍歷至第一項(xiàng)。


      (一個(gè)從左往右,一個(gè)從右往左)

      這兩個(gè)方法都接收兩個(gè)參數(shù):對(duì)每一項(xiàng)都會(huì)運(yùn)行的歸并函數(shù),以及可選的以之為歸并起點(diǎn)的初始值:傳給reduce()和reduceRight()的函數(shù)接收4個(gè)參數(shù):上一個(gè)歸并值、當(dāng)前項(xiàng)、當(dāng)前項(xiàng)的索引和數(shù)組本身。


      這個(gè)函數(shù)返回的任何值都會(huì)作為下一次調(diào)用同一個(gè)函數(shù)的第一個(gè)參數(shù)。


      如果沒(méi)有給這兩個(gè)方法傳入可選的第二個(gè)參數(shù)(作為歸并起點(diǎn)值),則第一次迭代將從數(shù)組的第二項(xiàng)開(kāi)始,因此傳給歸并函數(shù)的第一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)是數(shù)組的第二項(xiàng)。

      可以使用reduce()函數(shù)執(zhí)行累加數(shù)組中所有數(shù)值的操作.


      const array_1 = [9, 90, 900, 9000, 1];
      let sum = array_1.reduce((prev, cur, index, array) => 
          prev + cur,
      );
      console.log(sum);



      掃描二維碼推送至手機(jī)訪問(wèn)。

      版權(quán)聲明:本文由星星博客發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。

      本文鏈接:http://www.7811333.com/?id=484

      “JS數(shù)組常用方法” 的相關(guān)文章

      JavaScript中的setTimeout和setInterval

      JavaScript是一門(mén)廣泛應(yīng)用于網(wǎng)頁(yè)開(kāi)發(fā)的腳本語(yǔ)言,它提供了許多強(qiáng)大的功能和特性。其中,setTimeout和setInterval是兩個(gè)常用的定時(shí)器函數(shù),它們可以在指定的時(shí)間間隔內(nèi)執(zhí)行代碼。本文將深入探討這兩個(gè)函數(shù)的用法和特點(diǎn),并通過(guò)代碼示例來(lái)加深理解。...

      深入理解JavaScript原型鏈

      JavaScript原型鏈?zhǔn)窃撜Z(yǔ)言中一個(gè)核心的概念,理解它對(duì)于成為一名優(yōu)秀的JavaScript開(kāi)發(fā)者至關(guān)重要。在本篇文章中,我們將深入探討JavaScript原型鏈的工作原理、如何使用原型鏈來(lái)實(shí)現(xiàn)繼承,以及一些與原型相關(guān)的最佳實(shí)踐。 原型鏈?zhǔn)鞘裁矗?..

      JavaScript中的call、bind和apply方法深度解析

      JavaScript是一種動(dòng)態(tài)的、強(qiáng)大的編程語(yǔ)言,它的靈活性源于其獨(dú)特的函數(shù)調(diào)用方式。在JavaScript中,我們常常會(huì)遇到三個(gè)非常重要的函數(shù)方法:call、bind和apply。這些方法都是用來(lái)改變函數(shù)運(yùn)行時(shí)this的指向的。理解它們的工作原理和使用場(chǎng)景,對(duì)于我們編寫(xiě)高質(zhì)量的Java...

      微信小程序如何下載外部文件

      小程序下載文件主要是通過(guò)轉(zhuǎn)發(fā)文件到聊天進(jìn)行轉(zhuǎn)存,以下為具體實(shí)現(xiàn)代碼,可以直接拿去用,傳入下載的url:const download = (url) => {   var that = this...

      typescript 中 omit 的理解

      在 TypeScript 中,Omit 是一種非常有用的工具類(lèi)型,它可以用于創(chuàng)建一個(gè)新的類(lèi)型,這個(gè)新類(lèi)型是從現(xiàn)有類(lèi)型中排除了指定的屬性后得到的。如果你想要處理一個(gè)對(duì)象但又不需要包含某些屬性,那么 Omit 可以幫助你快速地創(chuàng)建一個(gè)新的類(lèi)型。 比如說(shuō),...

      微前端使用: qiankun

      微前端使用: qiankun

      一、qiankun使用場(chǎng)景1. 簡(jiǎn)介qiankun是在single-spa的基礎(chǔ)上實(shí)現(xiàn)的,可以保證各個(gè)項(xiàng)目獨(dú)立使用,也可以集成使用。各系統(tǒng)之間不受技術(shù)棧的限制,集成使用也能保證各樣式和全局變量的隔離。模塊的插拔式使用,當(dāng)公司項(xiàng)目集是一個(gè)大系統(tǒng)下包含多個(gè)子系統(tǒng)或者模塊時(shí),可以采用這種方式動(dòng)態(tài)部署各個(gè)系...

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

      訪客

      ◎歡迎參與討論,請(qǐng)?jiān)谶@里發(fā)表您的看法和觀點(diǎn)。
      主站蜘蛛池模板: 亚洲综合网站色欲色欲| 成人伊人亚洲人综合网站222| 色婷婷综合缴情综免费观看| 婷婷久久综合九色综合绿巨人| 一本大道久久a久久综合| 香蕉国产综合久久猫咪| 亚洲综合网美国十次| 丁香五月天综合缴情网| 色88久久久久高潮综合影院| 国产精品国产色综合色| 亚洲国产综合精品| 国产色综合久久无码有码| 狠狠色丁香久久婷婷综合蜜芽五月| 国产性天天综合网| 国产成人精品综合网站| 青青热久久综合网伊人| 狠狠色丁香婷婷综合久久片| 99久久亚洲综合精品成人网| 中文字幕亚洲综合久久男男| 天天综合色一区二区三区| 色综合久久天天影视网| 精品国产第一国产综合精品| 亚洲熟女乱综合一区二区| 色婷婷99综合久久久精品| 亚洲欧洲国产综合AV无码久久| 色欲综合久久躁天天躁蜜桃| 一本一本久久aa综合精品| 久久91精品久久91综合| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 天天久久影视色香综合网| 国产色综合久久无码有码| 久久亚洲综合色一区二区三区 | 亚洲伊人tv综合网色| 人人妻人人狠人人爽天天综合网| 五月婷婷久久综合| 狠狠色丁香久久婷婷综合| 一本久久a久久精品综合夜夜| 久久精品水蜜桃av综合天堂| 久久久综合九色合综国产精品 | 噜噜综合亚洲AV中文无码| 色天天综合久久久久综合片|