<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個(gè)常用的JavaScript數(shù)組方法

          共 2482字,需瀏覽 5分鐘

           ·

          2020-12-08 01:30

          數(shù)組(Array)是JavaScript中內(nèi)置的全局對(duì)象,在構(gòu)建諸如商品列表等組件(Component)時(shí),時(shí)常用到。
          除了常見(jiàn)的push、pop、indexOf等方法,js還提供了一些諸如過(guò)濾、規(guī)約等流處理方法,非常類(lèi)似于Java的Stream庫(kù)。
          const students = [ { name: 'Alice', score: 100 }, { name: 'Bob', score: 90 }, { name: 'Trunp', score: 80 }, { name: 'Biden', score: 70 }, { name: 'Joe', score: 60 }, { name: 'Sunshine', score: 50 }, { name: 'Elon', score: 40 }, { name: 'Jack', score: 30 },];

          1、filter

          過(guò)濾方法,返回符合條件的元素。
          //返回成績(jī)大于75的高分學(xué)生const highScores = students.filter(stu => stu.score > 75);console.log(highScores);
          結(jié)果:
          [ { name: 'Alice', score: 100 }, { name: 'Bob', score: 90 }, { name: 'Trunp', score: 80 }]
          更好的是,由于const類(lèi)型的值,都是不可變量,因此這些操作的返回的都是一個(gè)新對(duì)象,并不會(huì)影響到原值。

          2、map

          將數(shù)組內(nèi)的item轉(zhuǎn)化成另一種對(duì)象,類(lèi)似于Java的Fucntion接口。
          //返回全部對(duì)象的name屬性const names = students.map(stu => stu.name);console.log(names);
          結(jié)果:
          [ 'Alice','Bob', 'Trunp','Biden','Joe', 'Sunshine','Elon','Jack']

          3、find

          類(lèi)似于filter方法,但返回第一個(gè)符合條件的元素。filter返回一個(gè)數(shù)組,find返回一個(gè)object。
          //返回name長(zhǎng)度為4的第一個(gè)對(duì)象const foundedOne = students.find(stu=>stu.name.length === 4);console.log(foundedOne);
          結(jié)果:
          { name: 'Elon', score: 40 }
          由結(jié)果可見(jiàn),雖然elon和jack都符合條件,但只返回了elon。

          4、forEach

          遍歷數(shù)組內(nèi)全部元素。
          //打印元素students.forEach(item=>console.log(`stu-name=${item.name},stu-score=${item.score}`));
          結(jié)果:
          stu-name=Alice,stu-score=100stu-name=Bob,stu-score=90stu-name=Trunp,stu-score=80stu-name=Biden,stu-score=70stu-name=Joe,stu-score=60stu-name=Sunshine,stu-score=50stu-name=Elon,stu-score=40

          5、some

          當(dāng)數(shù)組中有一個(gè)符合條件,則返回true,否則返回false。
          //是否至少有一個(gè)name為Jack的const isSome = students.some(item=>item.name === 'Jack');console.log(isSome);
          結(jié)果:true

          6、every

          功能類(lèi)似于some,但要求每一個(gè)元素都符合條件才返回true。
          //是否score都大于70const isEvery = students.every(item=>item.score > 70);console.log(isEvery);
          結(jié)果:false

          7、reduce

          規(guī)約函數(shù)。在MDN中給出的API可以簡(jiǎn)化為,reduce(callback(accumulator,current),initValue)。它有兩個(gè)參數(shù),第一個(gè)是回調(diào)函數(shù),第二個(gè)initValue是初始值,可選的。current表示數(shù)組內(nèi)的元素,即當(dāng)前值。
          值得一說(shuō)的是accumulator這個(gè)參數(shù),它是中間態(tài)的值,一個(gè)累加器。換句話(huà)數(shù),reduce函數(shù)是有狀態(tài)的,即非純函數(shù),在多線(xiàn)程執(zhí)行的時(shí)候,需要做一致性處理,否則可能會(huì)得到意外值。當(dāng)然JavaScript是單線(xiàn)程執(zhí)行的,所以可不考慮,但是用到類(lèi)似于Java的語(yǔ)言中則需小心。
          //求取全部score之和const result = students.reduce( (accumulator, current) => accumulator + current.score, 0);console.log(result);
          以上函數(shù)中,我們通過(guò)accumulator加上每一個(gè)元素值,獲得最終結(jié)果。
          結(jié)果:520。

          8、includes

          是否包含指定的元素值。
          const isIncludes = students.includes({ name: 'Jack', score: 30 });console.log(isIncludes);
          結(jié)果:false。
          雖然提供了和最后一個(gè)元素的一摸一樣的{name: 'Jack', score: 30},但仍然返回false,說(shuō)明兩個(gè)對(duì)象不是指向同一個(gè)引用。
          以上,都是很實(shí)用的方法,他們使得原來(lái)需要很多語(yǔ)句才能做的事情,通過(guò)一個(gè)簡(jiǎn)單的調(diào)用,即可得出結(jié)果。
          本文完~
          瀏覽 43
          點(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>
                  h片在线观看免费 | 可以看黄片在线看 | 蘑菇 视频成人精品网站 | 中文字幕亚洲无码高清 | 天天插天天操 |