數組方法整理

来源:https://www.cnblogs.com/macq/archive/2018/01/26/8360123.html
-Advertisement-
Play Games

數組方法是否為數組Array.isArray(param)如果param是 Array,則為true; 否則為false。數組轉字元串joinjoin(separator)以separator為分隔符,省略的話則用預設用逗號為分隔符可以實現重覆字元串,實質是在n+1個空字元串之間加入要重覆 ...


數組方法
  • 是否為數組
    • Array.isArray(param)
    • 如果param是 Array,則為true; 否則為false。
  • 數組轉字元串
    • join
      • join(separator)
      • 以separator為分隔符,省略的話則用預設用逗號為分隔符
      • 可以實現重覆字元串,實質是在n+1個空字元串之間加入要重覆的字元串
        function repeatString(str, n) {
        return new Array(n + 1).join(str)
        }
        console.log(repeatString("abc", 3)) // abcabcabc
      • 不影響原數組
  • 增刪改數組
    • splice(start,length[,params])
      • 刪除:
        • 參數:要刪除的第一項的位置和要刪除的項數。
        • 例如, splice(0,2)會刪除數組中的前兩項。
      • 插入:
        • 參數:起始位置0要刪除的項數)和要插入的項。
        • 例如,splice(2,0,4,6)會從當前數組的位置 2 開始插入4和6。
      • 替換:
        • 參數:起始位置要刪除的項數要插入的任意數量的項
        • 插入的項數不必與刪除的項數相等。
        • 例如,splice (2,1,4,6)會刪除當前數組位置 2 的項,然後再從位置 2 開始插入4和6。
      • 返回值為一個數組,該數組中包含從原始數組中刪除的項,如果沒有刪除任何項,則返回一個空數組
    • push()
      • 接收任意數量的參數,將它們逐個添加到數組尾部
      • 返回值是修改後的數組長度
    • pop()
      • 數組尾部移除最後一項
      • 返回值是被移除的項
    • shift()
      • 移除數組第一項
      • 返回值為被移除的項
      • 數組為則返回undefined
    • unshift()
      • 接收任意數量的參數,將他們添加到數組頭部
      • 返回值是修改後的數組長度
    • 對比push和unshift多參數情況
      可以把參數看做一個整體,按原有順序放到數組的頭(尾)部
      • push
        • let arr = [4,5,6]
        • arr.push(7,8,9) // arr=[4,5,6,7,8,9]
      • unshift
        • let arr =[4,5,6]
        • arr.unshift(1,2,3) // arr=[1,2,3,4,5,6]
  • 數組排序
    • sort()
      • sort()方法會調用每個數組項的 toString()轉型方法,然後比較得到的字元串,以確定如何排序。
      • 即使數組中的每一項都是數值, sort()方法比較的也是字元串。
        var arr1 = ["a", "d", "c", "b"];
        console.log(arr1.sort()); // ["a", "b", "c", "d"]
        arr2 = [13, 24, 51, 3];
        console.log(arr2.sort()); // [13, 24, 3, 51] (這裡轉換成字元串作比較,所以相當於每個字元串的第一位進行比較,即[1,2,5,3]。排序後變成[1,2,3,5],即[13,24,3,51],所以個位數比較不會出現這種問題)
        console.log(arr2); // [13, 24, 3, 51] (原數組被改變)
      • sort()方法可以接收一個比較函數作為參數,以便我們指定哪個值位於哪個值的前面。比較函數接收兩個參數,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等則返回0,如果第一個參數應該位於第二個之後則返回一個正數
        升序:
        arr.sort(function(a,b){
        return a-b
        ​​})​
        降序:
        ​​arr.sort(function(a,b){
        return b-a
        ​​})​
    • reverse()
      • 反轉數組項的順序。
  • 數組拼接
    • concat()
      • 將參數添加到原數組中。
      • 這個方法會先創建當前數組一個副本,然後將接收到的參數添加到這個副本的末尾,最後返回新構建的數組
      • 在沒有給 concat()方法傳遞參數的情況下,它只是複製當前數組並返回副本。
      • 傳入的不是數組,則直接把參數添加到數組後面,如果傳入的是數組,則將數組中的各個項添加到數組中
      • 不影響原數組
  • 數組切割
    • slice(start[,end])
      • 返回從原數組中指定開始下標結束下標之間的項組成的新數組,但不包括結束位置的項。
      • 在只有一個參數的情況下, slice()方法返回從該參數指定位置開始到當前數組末尾的所有項。
      • 不影響原數組
  • 數組搜索
    • indexOf()和 lastIndexOf()
      • 參數:要查找的項和(可選的)表示查找起點位置的索引。可以是負數,它代表相對於數組末尾的個數。最後一個元素是-1,倒數第二個元素為-2,以此類推...
      • 參數為NaN時返回-1,所以不能搜索數組中的NaN。
      • 這兩個方法都返回要查找的項在數組中的位置,或者在沒找到的情況下返回-1
      • 比較參數和數組項時,會使用全等操作符。
      • 不影響原數組
    • find()和findIndex() (es6)
      • 在數組內部, 找到第一個符合條件的數組成員。
        arr.find((value, index, arr) => {
        ​return value > 4
        })
        ​value:每一次迭代查找的數組元素
        index:每一次迭代查找的數組元素索引
        arr:被查找的數組
      • find()函數,找到就返回該元素,找不到返回undefined。
      • findIndex()函數,找到就返回元素的位置,找不到就返回-1
      • 可以搜索NaN的位置。
        arr.findIndex((value)=>{
        ​ return Object.is(NaN,value)
        ​})
      • 不影響原數組
    • includes() (es7)
      • 表示某個數組是否包含給定的值,與字元串的includes()方法類似
      • 第一個參數表示要查找的數,第二個參數表示搜索的起始位置,返回一個布爾值
      • 推薦使用這個而不是indexOf()因為後者會對NaN造成誤判。
        arr.includes(NaN)​
      • 不影響原數組
  • 數組歸併
    • reduce()和 reduceRight()
      • 參數:每一項上調用的函數和(可選的)作為歸併基礎的初始值
      • 回調函數參數:前一個值當前值、項的索引數組對象
      • reduce()從數組的第一項開始,逐個遍歷到最後。
      • reduceRight()從數組的最後一項開始,向前遍歷到第一項。
      • 空數組上,不帶初始值參數調用將會報錯。
      • 如果只有一個元素且沒有指定初始值,或者空數組指定了一個初始值,reduce()只是簡單地返回那個值而不會調用化簡函數
      • 函數返回的任何值都會作為第一個參數自動傳給下一項。
      • 數組求和(數組一開始加了一個初始值10)。
        arr.reduceRight(function(prev, cur, index, array){
        return prev + cur;
        ​},10)
      • 不影響原數組
  • 數組迭代
    • 都不影響原數組
    • forEach()
      • 對數組中的每一項運行給定函數。
      • 函數參數:元素索引數組本身
      • 沒有返回值
    • map()
      • 返回每次函數調用的結果組成的數組
    • filter()
      • 返回滿足過濾條件組成的數組。
    • every()
      • 判斷數組中每一項都是否滿足條件。
      • 只有所有項都滿足條件,才會返回true。
      • 若有一個參數為false,則返回,忽略執行後面的參數。
    • some()
      • 判斷數組中是否存在滿足條件的項。
      • 只要有一項滿足條件,就會返回true。
      • 若有一個參數為true, 則返回, 忽略執行後面的參數。
  • 數組成員複製
    • copyWithin() (es6)
      • 在數組內部,將指定位置的成員複製到其他位置(會覆蓋原有成員)。
      • 參數:
      • target(必須): 從該位置開始替換數據
      • start(可選):從該位置開始讀取原數組數據
      • end(可選):複製到該位置的前一個位置截止
      • [1, 2, 3, 4, 5, 6].copyWithin(2) // [1, 2, 1, 2, 3, 4]
      • [1, 2, 3, 4, 5, 6].copyWithin(2,1) // [1, 2, 2, 3, 4, 5]
      • [1, 2, 3, 4, 5, 6].copyWithin(2,1,4) // [1, 2, 2, 3, 4, 6]
  • 數組填充
    • fill(value[,start[,end]]) (es6)
      • 將一個固定值替換數組的元素(會覆蓋原有成員)。
      • value必需。填充的值。
      • start可選。開始填充位置。
      • end可選。停止填充位置 (預設為 array.length),填充至指定位置前一個。
      • [a,b,c,d].fill('e') // [e,e,e,e]
      • [a,b,c,d].fill('e',2) // [a,b,e,e]
      • [a,b,c,d].fill('e',2,3) // [a,b,e,d]
  • 其他值轉化成數組
    • Array.from(arrayLike[, mapFn[, thisArg]]) (es6)
      • 將部署了Iterator介面的對象,比如:Set,Map,Array;和類數組對象轉換成數組。類數組對象,就是一個對象必須有length屬性沒有length,轉出來的就是空數組
      • arrayLike:被轉換的的對象。
      • mapFn:map函數。用來對每個元素進行處理,將處理後的值放入返回的數組。
      • thisArg:map函數中this指向的對象。
      • 相容寫法
        if (!Array.from) {
        Array.from = function(obj) {
        return [].slice.call(obj)
        }
        }​
    • Array.of()
      • 將一組值轉化為數組。
      • 參數:無或無限(無時返回一個空數組)。
      • 相容寫法
        if (!Array.of) {
        Array.of = function() {
        return Array.prototype.slice.call(arguments)
        }
        }


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 博主自己也是一個剛開始學習ext的小白,學習新知識一定要記錄下來,直接複製自己原來寫的培訓手冊里的,希望能幫到剛接觸ExtJs的你!——[作者:伊利蛋白鈣yL 原文鏈接:http://www.cnblogs.com/milkbiubiubiu/p/8360716.html] 第1章 創建並運行第一個 ...
  • 當ngModel雙向綁定非基本數據類型值時 子組件中ngModel綁定的值改變時,通過onChangeCallback 傳回父組件時,有兩種情況: 1. 基本數據類型:string/number 等變數,父組件中會跟著變化 1. 非基本數據類型:{}/[]/Date/... 父組件中不會檢測到變化 ...
  • 在實際應用中,我們經常會遇到本文換行和文本溢出時截取字元串的情況,在理解文本溢出屬性之前,我們首先要瞭解文本換行和空白符這兩個屬性,然後再學習文本溢出text-overflow屬性。 white-space屬性:用來對空格進行處理。 可能的屬性值有: (2)pre:使用pre屬性值的時候,空白和換行 ...
  • 流程圖如下: 重回DescriptionFilePlugin 上一節最後進入relative事件流,註入地點如下: 這似曾相識的感覺,這不就是解析package.json的插件麽,又調用了一次。 但是有一點點微妙的不同,第一次調用該插件時,request對象如下所示: 在經過幾個插件的洗禮後,變成了 ...
  • Array.isArray() 用來檢驗是不是數組 可以看出 typeof 並不能檢驗數組,雖然 Array.isArray() 可以檢驗數組,但是 IE8 都不相容 這個方法可以相容IE8 以及以下的瀏覽器 typeof 這裡 null 是基本類型,不是一個對象,這個是 JS 的一個 bug。還有 ...
  • 今天在整理前段時間做過的項目,發現之前在集成web環信的時候遇到過一個奇怪的需求:需要終止一個正在進行等待返回的promise,或者阻止其調用resolve和reject。(具體為何會有這種需求我也不太記得了。。。 現在回頭看,一定會有其他的常規解決方案)。 不過本著對未知牛角尖的專研精神(最近有點 ...
  • mui傳值,使用mui.openWindow()實現,參數extras傳入參數,被傳入的頁面用plus接收即可 ...
  • function num(obj){ obj.value = obj.value.replace(/[^\d.]/g,""); //清除"數字"和"."以外的字元 obj.value = obj.value.replace(/^\./g,""); //驗證第一個字元是數字 obj.value = o ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...