整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線:

          javascript 數(shù)組常用的方法(圖解)

          javascript 數(shù)組常用的方法(圖解)

          avaScript 提供了一系列強(qiáng)大的數(shù)組方法,這些方法可以極大地簡(jiǎn)化數(shù)組的操作和處理。理解并掌握這些方法對(duì)任何JavaScript開(kāi)發(fā)者來(lái)說(shuō)都是至關(guān)重要的。

          數(shù)組方法可以分為幾類(lèi),包括添加和移除元素的方法、遍歷和變換的方法、查找和篩選的方法,以及其他雜項(xiàng)方法。添加和移除元素的方法如 .push() 和 .unshift(),分別用于在數(shù)組末尾和開(kāi)頭添加元素,而 .pop() 和 .shift() 則用于移除數(shù)組末尾和開(kāi)頭的元素。這些方法修改了原數(shù)組的長(zhǎng)度,并返回被移除的元素。

          遍歷和變換的方法如 .map() 和 .filter() 允許開(kāi)發(fā)者對(duì)數(shù)組中的每個(gè)元素進(jìn)行操作,并返回一個(gè)新的數(shù)組。.map() 方法對(duì)數(shù)組中的每個(gè)元素執(zhí)行給定的函數(shù),并返回包含結(jié)果的新數(shù)組,而 .filter() 則返回一個(gè)新的數(shù)組,包含所有通過(guò)指定函數(shù)測(cè)試的元素。

          查找和篩選的方法如 .includes() 和 .find() 提供了在數(shù)組中查找特定元素的能力。.includes() 檢查數(shù)組是否包含某個(gè)元素,并返回一個(gè)布爾值。.find() 返回?cái)?shù)組中滿(mǎn)足提供的測(cè)試函數(shù)的第一個(gè)元素的值,或者在沒(méi)有滿(mǎn)足測(cè)試函數(shù)的元素時(shí)返回 undefined。

          其他重要的數(shù)組方法還包括 .reverse()、.slice() 和 .splice()。.reverse() 顛倒數(shù)組中元素的順序。.slice() 返回一個(gè)新的數(shù)組對(duì)象,這一對(duì)象是原數(shù)組的一個(gè)淺拷貝,由開(kāi)始索引到結(jié)束索引(不包括結(jié)束索引)選擇的部分組成。.splice() 方法則可以添加或移除數(shù)組中的元素,并返回被移除的元素。


          js中數(shù)組方法

          總的來(lái)說(shuō),這些方法不僅可以極大地提高代碼的可讀性和維護(hù)性,還能使數(shù)組操作更加高效和簡(jiǎn)潔。無(wú)論是進(jìn)行簡(jiǎn)單的元素添加和移除,還是復(fù)雜的數(shù)據(jù)轉(zhuǎn)換和篩選,JavaScript 的數(shù)組方法都能提供強(qiáng)有力的支持。掌握這些方法將有助于開(kāi)發(fā)者在編寫(xiě)代碼時(shí)更加得心應(yīng)手,處理數(shù)組相關(guān)的任務(wù)也會(huì)變得更加輕松。

          rray.fill()

          .fill() 方法是用一個(gè)固定值填充一個(gè)數(shù)組中的元素,從起始索引到終止索引內(nèi)的全部元素,即將數(shù)組中的所有元素更改為另外的值,從開(kāi)始索引(默認(rèn)為 0)到結(jié)束索引(默認(rèn)為 array.length),最終返回修改后的數(shù)組。

          語(yǔ)法:Array.fill(value,start,end)

          • value:為需要處理的數(shù)組
          • start:開(kāi)始索引(默認(rèn)為 0)
          • end:結(jié)束索引(默認(rèn)為 array.length),如指定結(jié)束索引,是不包括索引本身的元素
          const articles=[
              "《如何在 Vue 的計(jì)算屬性中傳遞參數(shù)》作者:天行無(wú)忌",
              "《Angular數(shù)據(jù)狀態(tài)管理框架:NgRx/Store》作者:天行無(wú)忌",
              "《Angular管道PIPE介紹》作者:天行無(wú)忌",
          ];
          const replaceArticle="《JavaScript 數(shù)組操作必須熟練運(yùn)用的10個(gè)方法》作者:天行無(wú)忌";
          
          console.log([...articles].fill(replaceArticle, 1)); // 從索引為 1 的元素開(kāi)始的素有元素替換,
          /*
          [
            '《如何在 Vue 的計(jì)算屬性中傳遞參數(shù)》作者:天行無(wú)忌',
            '《JavaScript 數(shù)組操作必須熟練運(yùn)用的10個(gè)方法》作者:天行無(wú)忌',
            '《JavaScript 數(shù)組操作必須熟練運(yùn)用的10個(gè)方法》作者:天行無(wú)忌'
          ]
          */
          
          console.log([...articles].fill(replaceArticle, 1, 2)); // 從索引為 1 的開(kāi)始到索引為2的元素替換,不包括索引為2的元素在內(nèi)
          /* 
          [
            '《如何在 Vue 的計(jì)算屬性中傳遞參數(shù)》作者:天行無(wú)忌',
            '《JavaScript 數(shù)組操作必須熟練運(yùn)用的10個(gè)方法》作者:天行無(wú)忌',
            '《Angular管道PIPE介紹》作者:天行無(wú)忌'
          ]
          */
          

          Array.from()

          .from() 方法從一個(gè)類(lèi)似數(shù)組或可迭代對(duì)象創(chuàng)建一個(gè)新的,淺拷貝的數(shù)組實(shí)例。

          語(yǔ)法:Array.from(arrayLike,mapFn)

          • arrayLike:想要轉(zhuǎn)換成數(shù)組的偽數(shù)組對(duì)象或可迭代對(duì)象
          • mapFn:可選,如果指定了該參數(shù),新數(shù)組中的每個(gè)元素會(huì)執(zhí)行該回調(diào)函數(shù)
          console.log(Array.from([1, 2, 3], (item)=> item + item)); // [ 2, 4, 6 ]
          console.log(Array.from("china")); // [ 'c', 'h', 'i', 'n', 'a' ]
          

          使用方法

          這里大概介紹一下 Array.fill()Array.from() 的使用方法,但不限于本文介紹。

          創(chuàng)建數(shù)組并賦值

          這里介紹幾種創(chuàng)建于數(shù)組并賦值的方法,首先可以使用 Array.fill 方法創(chuàng)建一個(gè)填充有值的數(shù)組,但一般是同值數(shù)組。

          const numbers=new Array(5).fill(1);
          console.log(numbers); // [ 1, 1, 1, 1, 1 ]
          

          上面創(chuàng)建了一個(gè)全是 15 維數(shù)組,new Array(5) 創(chuàng)建一個(gè)有 5 維數(shù)組,再適用 .fill() 將每維替換為 1

          可以通過(guò)對(duì)一個(gè)空數(shù)組調(diào)用 keys 方法,生成一個(gè)升序的數(shù)組,如下:

          const numbers=[...new Array(5).keys()];
          console.log(numbers); // [ 0, 1, 2, 3, 4 ]
          

          還可以用 Array.from() 和一些計(jì)算方法來(lái)填充一個(gè)數(shù)組,如下:

          const numbers=Array.from(new Array(5), (_, i)=> i ** 2);
          console.log(numbers); // [ 0, 1, 4, 9, 16 ]
          

          上面創(chuàng)建了一個(gè) 0-4 的數(shù)字平方組成的數(shù)組,如果需要?jiǎng)?chuàng)建 undefined 組成的數(shù)組,如下:

          const undefineds=[...new Array(3)];
          console.log(undefineds); // [ undefined, undefined, undefined ]
          

          創(chuàng)建重復(fù)值

          在JavaScript 中創(chuàng)建重復(fù)值,常見(jiàn)有四種方式:

          • 使用循環(huán)
          • 使用 Array.fill()
          • 使用 repeat()
          • 使用 Array.from()

          repeat()構(gòu)造并返回一個(gè)新字符串,該字符串包含被連接在一起的指定數(shù)量的字符串的副本。

          語(yǔ)法:str.repeat(count)

          • count:整數(shù),表示在新構(gòu)造的字符串中重復(fù)了多少遍原字符串。
          const china=" ";
          
          const createStrByRepeat=(str, count)=> str.repeat(count);
          const createStrByFill=(str, count)=> Array(count).fill(str).join("");
          const createStrByFrom=(str, count)=>
              Array.from({ length: count }, ()=> str).join("");
          console.log(createStrByRepeat(china, 3)); //   
          console.log(createStrByFill(china, 3)); //   
          console.log(createStrByFrom(china, 3)); //   
          

          總結(jié)

          在本文中,通過(guò)圖解方式展示常用的 JavaScript 數(shù)組方法的功能,結(jié)合前面的《JavaScript 數(shù)組操作必須熟練運(yùn)用的10個(gè)方法》內(nèi)容,我覺(jué)得對(duì)于JavaScript數(shù)組的理解和使用應(yīng)該沒(méi)有什么問(wèn)題了,如果還有不足的地方,請(qǐng)不要忘記在評(píng)論中提及,到時(shí)會(huì)更新相關(guān)內(nèi)容的。

          JavaScript是現(xiàn)代Web開(kāi)發(fā)的基石,隨著ECMAScript 6(簡(jiǎn)稱(chēng)ES6)的引入,其語(yǔ)法和功能得到了顯著增強(qiáng)。在ES6中,數(shù)組操作的方法得到了極大的豐富和優(yōu)化,這不僅提高了代碼的可讀性和維護(hù)性,也極大地提升了開(kāi)發(fā)效率。本文將深入探討ES6中數(shù)組的一些常用方法,包括它們的特性、應(yīng)用場(chǎng)景和優(yōu)化策略。

          技術(shù)概述

          ES6數(shù)組方法

          ES6引入了一系列新方法來(lái)處理數(shù)組,這些方法不僅提供了更簡(jiǎn)潔的語(yǔ)法,還增加了數(shù)組操作的功能性。下面列舉了一些核心方法:

          • Array.from():從類(lèi)數(shù)組對(duì)象或可迭代對(duì)象創(chuàng)建新的數(shù)組實(shí)例。
          • Array.of():創(chuàng)建一個(gè)擁有指定序列元素的新數(shù)組。
          • find():返回?cái)?shù)組中滿(mǎn)足提供的測(cè)試函數(shù)的第一個(gè)元素的值。
          • findIndex():返回?cái)?shù)組中滿(mǎn)足提供的測(cè)試函數(shù)的第一個(gè)元素的索引。
          • includes():判斷一個(gè)數(shù)組是否包含一個(gè)指定的元素,根據(jù)情況返回true或false。
          • entries(), keys(), values():返回一個(gè)迭代器對(duì)象,分別用于遍歷數(shù)組的鍵值對(duì)、鍵或值。

          代碼示例

          const numbers=[1, 2, 3, 4, 5];
          const even=numbers.find(n=> n % 2===0);
          const index=numbers.findIndex(n=> n > 3);
          console.log(even); // 輸出: 2
          console.log(index); // 輸出: 3
          

          技術(shù)細(xì)節(jié)

          工作原理

          這些方法內(nèi)部通過(guò)迭代數(shù)組元素并應(yīng)用回調(diào)函數(shù)來(lái)完成特定的任務(wù)。例如,find()方法遍歷數(shù)組直到找到第一個(gè)滿(mǎn)足回調(diào)函數(shù)條件的元素為止,然后返回該元素。

          特性和難點(diǎn)

          • 鏈?zhǔn)秸{(diào)用:數(shù)組方法可以鏈?zhǔn)秸{(diào)用,提高代碼的緊湊性和可讀性。
          • 性能考量:雖然新方法提供了便利,但在性能敏感的應(yīng)用中,應(yīng)考慮其迭代成本。

          實(shí)戰(zhàn)應(yīng)用

          應(yīng)用場(chǎng)景

          假設(shè)你需要從一個(gè)用戶(hù)列表中找出所有年齡大于18歲的用戶(hù),并按年齡排序。

          代碼示例

          const users=[
              { name: "Alice", age: 22 },
              { name: "Bob", age: 17 },
              { name: "Charlie", age: 20 }
          ];
          
          const adults=users
              .filter(user=> user.age > 18)
              .sort((a, b)=> a.age - b.age);
          
          console.log(adults);
          // 輸出: [{ name: 'Charlie', age: 20 }, { name: 'Alice', age: 22 }]
          

          優(yōu)化與改進(jìn)

          潛在問(wèn)題

          • 過(guò)度使用鏈?zhǔn)秸{(diào)用:雖然鏈?zhǔn)秸{(diào)用使代碼看起來(lái)更簡(jiǎn)潔,但過(guò)度使用可能導(dǎo)致代碼難以跟蹤和調(diào)試。

          代碼示例

          // 過(guò)度鏈?zhǔn)秸{(diào)用示例
          const result=array
              .map(item=> item * 2)
              .filter(item=> item > 10)
              .reduce((acc, cur)=> acc + cur, 0);
          

          優(yōu)化建議

          • 適度拆分邏輯:將長(zhǎng)鏈拆分成單獨(dú)的行或變量,以提高可讀性。
          • 性能優(yōu)化:在數(shù)據(jù)量大時(shí),考慮使用傳統(tǒng)循環(huán)或更高效的算法。

          常見(jiàn)問(wèn)題

          • Q: 為什么我的數(shù)組方法沒(méi)有返回預(yù)期的結(jié)果?
          • A: 確保你的回調(diào)函數(shù)正確地處理了所有邊界條件,例如數(shù)組為空或元素不符合預(yù)期格式。

          總結(jié)與展望

          ES6中新增的數(shù)組方法極大地豐富了JavaScript的編程范式,使得數(shù)組操作更加直觀和高效。掌握這些方法不僅能夠提高代碼質(zhì)量,還能在面對(duì)復(fù)雜數(shù)據(jù)處理任務(wù)時(shí)更加游刃有余。隨著Web技術(shù)的不斷進(jìn)步,JavaScript將繼續(xù)進(jìn)化,提供更多強(qiáng)大的工具和功能。因此,持續(xù)學(xué)習(xí)和實(shí)踐是每個(gè)前端開(kāi)發(fā)者不可或缺的成長(zhǎng)路徑。未來(lái),我們可以期待看到更多創(chuàng)新的語(yǔ)法和庫(kù),進(jìn)一步推動(dòng)Web開(kāi)發(fā)的邊界。


          主站蜘蛛池模板: 精品日韩一区二区三区视频| 在线观看一区二区三区av| 日韩视频免费一区二区三区| 人妻体内射精一区二区三四| 中文无码精品一区二区三区| 日韩精品人妻av一区二区三区| 无码人妻精品一区二区三区久久久 | 一区二区亚洲精品精华液| 一区二区视频在线| 无码人妻一区二区三区免费n鬼沢| 亚洲中文字幕无码一区 | 亚洲av色香蕉一区二区三区| 精品黑人一区二区三区| 波多野结衣一区二区三区| 亚洲欧美日韩一区二区三区 | 在线|一区二区三区四区| 日韩AV片无码一区二区不卡| 国产在线第一区二区三区| 一区二区三区无码高清| 国产另类ts人妖一区二区三区| 久久精品国产一区二区三区不卡| 岛国精品一区免费视频在线观看| 国模大尺度视频一区二区| 免费av一区二区三区| 精品国产一区二区三区色欲| 中文字幕乱码一区久久麻豆樱花| 无码一区二区三区中文字幕| 一区视频在线播放| 国产精品无码一区二区三级 | 久久综合精品不卡一区二区| 日韩爆乳一区二区无码| 亚洲乱色熟女一区二区三区蜜臀| 精品日韩一区二区| 中文字幕无线码一区| 无码人妻一区二区三区在线 | 国产乱码精品一区二区三区四川人| 精品免费国产一区二区三区| 国产激情无码一区二区三区| 国产精品丝袜一区二区三区| 在线观看日本亚洲一区| 午夜无码一区二区三区在线观看|