JS數組常用的20種方法詳解(每一個方法都有例子,超全面,超好理解的教程,干貨滿滿)

目錄

1.會改變原數組的方法(7種)

1.push()

2.pop()

3.unshift()

4.shift()

5.reverse()

6.sort()

7.splice()

2.不改變原數組的方法(13種,返回的新數組是從原數組淺拷貝來的)

1.concat()

2.join()

3.slice()

4.indexOf()

5.forEach()

6.map()

7.filter()

8.every()

9.some()

10.find()

11.findIndex()

12.includes()

13.reduce()


  • 理解一個API最重要的是看它的作用,參數,返回值。
  • 每一個API這三個方面我都會先說明,并在后面的例子中體現出來。
  • 看完這篇文章,在寫代碼或者面試的時候你還只會那幾種屈指可數的方法嗎?
  • 趕快學起來吧!

1.會改變原數組的方法(7種)

1.push()

  • 作用:尾部添加元素
  • 參數:添加的元素
  • 返回值:操作完成后數組的長度
      let arr = [10, 20, 30, 40];let response = arr.push(20, 50);console.log(arr);console.log(response);

2.pop()

  • 作用:尾部刪除一個元素
  • 參數:無
  • 返回值:刪除的那個元素
      let arr = [10, 20, 30, 40];let response = arr.pop();console.log(arr);console.log(response);

3.unshift()

  • 作用:頭部添加元素
  • 參數:添加的元素
  • 返回值:操作完成后數組的長度
      let arr = [1, 2, 3, 4];let response = arr.unshift(0, 1, "123", true, { a: 100 });console.log(arr);console.log(response);

4.shift()

  • 作用:頭部刪除一個元素
  • 參數:無
  • 返回值:刪除的那個元素
      let arr = [1, 2, 3, 4];let response = arr.shift();console.log(arr);console.log(response);

5.reverse()

  • 作用:反轉數組
  • 參數:無
  • 返回值:操作完成后的數組
      let arr = [1, 2, 3, 4];let response = arr.reverse();console.log(arr);console.log(response);

6.sort()

  • 作用:排序
  • 參數:無(默認從小到大排序)或函數
  • 返回值:操作完成后的數組
      let arr = [-1, 1, 5, 3, 4, 6, 2, 7];//默認let response = arr.sort();console.log(arr);console.log(response);//從小到大排序arr.sort((a, b) => {return a - b;});console.log(arr);//從大到小排序arr.sort((a, b) => {return b - a;});console.log(arr);

7.splice()

  • 作用:在指定索引處刪除,添加元素
  • 參數:(索引,刪除元素的個數,添加的元素)。第三個參數可選
  • 返回值:刪除的元素(數組)
      let arr = [-1, 1, 5, 3, 4, 6, 2, 7];let response = arr.splice(2, 2);console.log(arr);console.log(response);let arr2 = [-1, 1, 5, 3, 4, 6, 2, 7];let response2 = arr2.splice(2, 0, 8);console.log(arr2);console.log(response2);

2.不改變原數組的方法(13種,返回的新數組是從原數組淺拷貝來的)

1.concat()

  • 作用:合并多個數組
  • 參數:(數組)
  • 返回值:返回一個新數組
      let arr = [1, 2, 3, 4, 5];let arr2 = ["zs", "ls", "ww", 1, 2];let res = arr.concat(arr2);console.log(arr);console.log(res);

2.join()

  • 作用:把數組轉化成以指定分隔符連接的字符串
  • 參數:(分隔符,或無參數(默認的分隔符是' , '))
  • 返回值:字符串
      let arr = [1, 2, 3, 4, 5];let res = arr.join("--");let res2 = arr.join();console.log(arr);console.log(res);console.log(res2);

3.slice()

  • 作用:截取數組
  • 參數:(開始索引,結束索引)。截取的元素包括開始索引,不包括結束索引
  • 返回值:新數組
      let arr = [1, 2, 3, 4, 5];let res = arr.slice(1, 3);console.log(arr);console.log(res);

4.indexOf()

  • 作用:查找元素在數組中的索引
  • 參數:(查找的元素)
  • 返回值:索引值。數組中沒有此元素則返回-1
      let arr = [1, 2, 3, 4, 5];let res = arr.indexOf(4);let res2 = arr.indexOf(6);console.log(arr);console.log(res);console.log(res2);

5.forEach()

  • 作用:遍歷數組
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:無
      let arr = [1, 2, 3, 4, 5];let res = arr.forEach((item, index) => {console.log(item, "-", index);});console.log(arr);console.log(res);

6.map()

  • 作用:映射數組(必須通過return關鍵字來映射)
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:新數組
      let arr = [1, 5, 3, 4, 6];let res = arr.map((item, index) => {let a = item + index;return a;});console.log(arr);console.log(res);

7.filter()

  • 作用:過濾篩選數組(必須要用return關鍵字)
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:新數組
      let arr = [1, 5, 3, 4, 6];let res = arr.filter((item, index) => {//第一種方式:// if (item >= 4) {//   return true;// }//第二種方式:return item >= 4;//兩種方式效果都一樣});console.log(arr);console.log(res);

8.every()

  • 作用:判斷數組中每個元素是否都滿足指定的條件(必須要用return關鍵字)
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:布爾值
      let arr = [1, 2, 3, 4, 5];let res = arr.every((item, index) => {return item > 0;});console.log(arr);console.log(res);let res2 = arr.every((item, index) => {return item > 3;});console.log(arr);console.log(res2);

9.some()

  • 作用:判斷數組中是否有元素滿足指定的條件(必須要用return關鍵字)
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:布爾值
      let arr = [1, 2, 3, 4, 5];let res = arr.some((item, index) => {return item > 2;});console.log(arr);console.log(res);let res2 = arr.some((item, index) => {return item > 5;});console.log(arr);console.log(res2);

10.find()

  • 作用:獲取數組中滿足指定條件的第一個元素(必須要用return關鍵字)
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:滿足指定條件的第一個元素。沒有滿足條件的返回undefined
      let arr = [1, 2, 3, 4, 5];let res = arr.find((item, index) => {return item > 3;});console.log(arr);console.log(res);let res2 = arr.find((item, index) => {return item > 5;});console.log(arr);console.log(res2);

11.findIndex()

  • 作用:獲取數組中滿足指定條件的第一個元素的索引(必須要用return關鍵字)
  • 參數:函數(函數中依次傳入的參數:數組中的每一項,每一項對應的索引)
  • 返回值:索引值。沒有滿足條件的元素則返回-1
      let arr = [1, 2, 3, 4, 5];let res = arr.findIndex((item, index) => {return item > 2;});console.log(arr);console.log(res);let res2 = arr.findIndex((item, index) => {return item > 5;});console.log(arr);console.log(res2);

12.includes()

  • 作用:判斷數組中是否包含指定的元素
  • 參數:指定的元素
  • 返回值:布爾值
      let arr = [1, 2, 3, 4, "ab", "bd"];console.log(arr.includes(2));console.log(arr.includes(5));console.log(arr.includes("ab"));console.log(arr.includes("c"));

13.reduce()

  • 作用:對數組的元素進行疊加操作(必須要用return關鍵字)
  • 參數:函數(函數中依次傳入的參數:前一次操作返回的值,當前項,當前項的索引),第二個參數(作為pre的初始值,可選)
  • 返回值:最后一次遍歷return的值
      let arr = [1, 2, 3, 4, 5];//不傳第二個參數:pre的初始值是數組第一個元素,cur是第二個元素,index從1開始let res = arr.reduce((pre, cur, index) => {console.log(pre, cur, index);return pre + cur;});console.log(res);//傳第二個參數:pre的初始值是傳入的第二個參數,cur是第一個元素,index從0開始let res2 = arr.reduce((pre, cur, index) => {console.log(pre, cur, index);return pre + cur;}, -1);console.log(res2);//應用1//計算數組中每個元素出現的次數let arr2 = [1, "b", 1, "a", "b", 1, 2];let num = arr2.reduce((pre, cur, index) => {if (cur in pre) {pre[cur]++;} else {pre[cur] = 1;}return pre;}, {});console.log(num);//應用2//對數組中對象里的屬性進行累加let arr3 = [{subject: "math",score: 10,},{subject: "chinese",score: 20,},{subject: "english",score: 30,},];let sum = arr3.reduce((pre, cur, index) => {return pre + cur.score;}, 0);console.log(sum);

文章到這里就結束了,覺得有收獲的可以點贊和收藏哦!也歡迎大家評論區留言。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164584.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164584.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164584.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

12個最佳WordPress投票插件

您是否正在為您的網站尋找WordPress投票插件? WordPress投票插件可讓您輕松地在您的網站上進行民意調查,用戶可以投票。這是在收集見解的同時建立用戶參與度的有效策略。 在本文中,我們精心挑選了最好的WordPress投票插件,可幫助…

代碼隨想錄算法訓練營第五十二天|300.最長遞增子序列 674. 最長連續遞增序列 718. 最長重復子數組

文檔講解:代碼隨想錄 視頻講解:代碼隨想錄B站賬號 狀態:看了視頻題解和文章解析后做出來了 300.最長遞增子序列 class Solution: # 2516 ms, faster than 64.96%def lengthOfLIS(self, nums: List[int]) -> int:n len(nums)dp [1] * n…

從Discord的做法中學習 — 使用Golang進行請求合并

正如你可能之前看到的,Discord去年發布了一篇有價值的文章,討論了他們成功存儲了數萬億條消息。雖然有很多關于這篇文章的YouTube視頻和文章,但我認為這篇文章中一個名為“數據服務為數據服務”的部分沒有得到足夠的關注。在這篇文章中&#…

QT項目移植到VS+QT(RTI-DDS)

QT中.pro文件中include(./xxx.pri) pri文件如下定義 unset(FILENAMES)for(FILENAME, FILENAMES) {HEADERFILE $$PWD/$${FILENAME}.hif(exists($$HEADERFILE)) {HEADERS * $$HEADERFILE}SOURCEFILE $$PWD/$${FILENAME}.cppif(exists($$SOURCEFILE)) {SOURCES * $$SOURCEFILE}…

CSS-鼠標屬性篇

屬性名:cursor 功能:設置鼠標光標的樣式 屬性值: pointer:小手move:移動圖標text:文字選擇器crosshair:十字架wait:等待help:幫助 eg.html{ cursor: wait;}(此處使用css改…

SpringBoot——MVC原理

優質博文:IT-BLOG-CN 一、SpringMVC自動配置 SpringMVC auto-configuration:SpringBoot自動配置好了SpringMVC。以下是SpringBoot對SpringMVC的默認配置:[WebMvcAutoConfiguration] 【1】包括ContentNegotiatingViewResolver和BeanNameView…

Keil工程打開發現目標芯片無法選擇解決方案

買了一個開發板,配套有一些底層驅動的例程,打開后發現目標芯片無法選擇,對應的下載Flash FLM文件也無法選擇。從提示框中可以知道所提供的例程是Keil4的例程,我電腦上安裝的Keil版本是Keil版本,估計是這個原因導致工程…

C# 執行Excel VBA宏工具類

寫在前面 在Excel文檔的自動化處理流程中,有部分值需要通過已定義的宏來求解,所以延伸出了用C# 調用Excel中的宏代碼的需求。 首先要從NuGet中引入Microsoft.Office.Interop.Excel 類庫 using Excel Microsoft.Office.Interop.Excel; 代碼實現 /// &l…

HashMap,1.7與1.8的區別,HashMap的擴容方式有哪些

HashMap,1.7與1.8的區別 底層數據結構的區別 JDK 1.8之前: 1)JDK1.8 之前HashMap 底層是數組和鏈表結合在一起使用也就是鏈表散列。 2)HashMap 通過key 的hashCode 經過擾動函數處理過后得到hash 值,然后通過(n - 1&#xff09…

修改el-radio-group樣式,自定義單選組件

修改el-radio-group樣式,自定義單選組件 自定義組件 MyRadioGroup.vue <template><div class"btnsBox"><el-radio-group v-model"activeIndex" change"handleClick"><el-radio-buttonv-for"(item, index) in list&qu…

CSS3動畫

在CSS3中新增了一個很有意思的東西&#xff0c;那就是動畫&#xff0c;有了動畫我們可以做很多的事情&#xff0c;讓我為大家介紹一下動畫吧&#xff01; 本篇文章關于介紹動畫&#xff0c;利用小球移動為你們介紹一下動畫 默認樣式&#xff1a; <!DOCTYPE html> <ht…

普通話考試相關(一文讀懂)

文章目錄&#xff1a; 一&#xff1a;相關常識 1.考試報名時間 2.報名地方 費用 證件 3.考試流程 4.普通話等級說明 二&#xff1a;題型 三&#xff1a;技巧 1.前三題 2.命題說話 四&#xff1a;普通話考試題庫 1.在線題庫 2.下載題庫 一&#xff1a;相關常識 …

JavaEE(SpringMVC)期末復習

文章目錄 JavaEE期末復習一、單選題&#xff1a; JavaEE期末復習 一、單選題&#xff1a; 1.Spring的核?技術是&#xff08; A &#xff09;&#xff1f; A依賴注入 B.JdbcTmplate C.聲明式事務 D.資源訪問 Spring的核心技術包括依賴注入&#xff08;Dependency Injection&am…

【前端】js通過canvas獲取瀏覽器的唯一指紋可以當做唯一標識

【前端】js通過canvas獲取瀏覽器的唯一指紋可以當做唯一標識 <!DOCTYPE html> <html><head> <meta charset"utf-8" /> <meta name"viewport" content"widthdevice-width" /> <title>JS Bin</title> &…

解決Emmy Lua插件在IDEA或 Reder 沒有代碼提示的問題(設置文件關聯 增加對.lua.txt文件的支持)

目錄 Reder版本2019.x Reder版本2021.1.5x Reder版本2019.x 解決Emmy Lua插件在IDEA或 Reder 沒有代碼提示的問題(設置文件關聯 增加對.lua.txt文件的支持) Reder版本2021.1.5x 解決Emmy Lua插件在IDEA或 Reder 沒有代碼提示的問題(設置文件關聯 增加對.lua.txt文件的支持)…

java游戲制作-王者榮耀游戲

一.準備工作 首先創建一個新的Java項目命名為“王者榮耀”&#xff0c;并在src下創建兩個包分別命名為“com.sxt"、”com.stx.beast",在相應的包中創建所需的類。 創建一個名為“img”的文件夾來儲存所需的圖片素材。 二.代碼呈現 package com.sxt;import javax.sw…

Netty Review - 探索ByteBuf的內部機制

文章目錄 概念ByteBuf VS Java NIO BufferByteBuf實現類HeapByteBuf vs DirectByteBufPooledByteBuf vs UnpooledByteBuf其他 ByteBuf的實現機制 概念 ByteBuf是Netty中用于處理二進制數據的緩沖區 Netty的ByteBuf是一個可用于高效存儲和操作字節數據的數據結構。與傳統的Byt…

跳躍游戲[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給你一個非負整數數組nums&#xff0c;你最初位于數組的第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個下標&#xff0c;如果可以&#xff0c;返回true&#xff1b;否則&#xff0c;返…

阿里入局鴻蒙!鴻蒙原生應用再添兩員新丁

今日HarmonyOS微博稱&#xff0c;阿里釘釘、螞蟻集團旗下的移動開發平臺mPaaS與華為達成合作&#xff0c;宣布啟動鴻蒙原生應用的開發&#xff01;相關應用將以原生方式適配#HarmonyOS NEXT#系統。 #HarmonyOS#市場或迎來爆發式增長&#xff01; 阿里釘釘 阿里釘釘與華為達成合…

Android 匿名內存深入分析

Android 匿名內存解析 有了binder機制為什么還需要匿名內存來實現IPC呢&#xff1f;我覺得很大的原因就是binder傳輸是有大小限制的&#xff0c;不說應用層的限制。在驅動中binder的傳輸大小被限制在了4M&#xff0c;分享一張圖片可能就超過了這個限制。匿名內存的主要解決思路…