數(shù)組的操作方法--簡(jiǎn)單總結(jié)(一)

  • 檢測(cè)數(shù)組 利用instanceof(實(shí)例) 關(guān)鍵字

    • 語(yǔ)法: arr instanceof Array 返回值: boolean值
  • 排序

    • 顛倒 : arr.reverse(); 返回值: 這個(gè)數(shù)組的引用
    • 按大小排序:
      • arr.asort();根據(jù)字符串Unicode碼點(diǎn)
      • arr.asort(compareFunction); 返回值: 該數(shù)組的引用
        案例:
         var arr = [20,1,42,12,18];
         arr.asort(function(a,b){
             return a-b;//a-b, 按升序; b-a, 降序.
         })
         console.log(arr);//[1,12,18,20,42]
        
  • 查找

    • 索引: 查找數(shù)組其中一個(gè)元素的index:
      • index : 常用來(lái)判斷數(shù)組是否含有某一個(gè)數(shù)據(jù)
        • indexOf: 用來(lái)查找第一次出現(xiàn)的位置,
          arr.indexOf(searchElement: mixed,fromIndex?:number);
          返回值: 對(duì)應(yīng)的索引
          注意: 第二個(gè)參數(shù)可選, 是從哪個(gè)索引開(kāi)始查詢(xún)
        • lastIndexOf: 用來(lái)查找某一最后出現(xiàn)的位置, 語(yǔ)法和indexOf 一樣
      • 值: arr[ i ], 返回值: 對(duì)應(yīng)下標(biāo)的值
  • 截取數(shù)組 (不改變?cè)瓟?shù)組,這是從原數(shù)組截取一部分)

    • slice() 方法: slice(start?number, end?number); 返回值: 截取好的新數(shù)組
      • 不傳參: 截取全部
      • slice(1,5): 從第一項(xiàng)開(kāi)始截取,包括第一項(xiàng), 但不包括第5項(xiàng)
      • slice(1,-2): 從第一項(xiàng)開(kāi)始截取 截取到 倒數(shù)第二項(xiàng), 但不包括倒數(shù)第二項(xiàng)
        案例 :
            var obj = {
              0:1,
              1:2,
              lenght:2
            }
            //思路: obj 借用 數(shù)組的slice方法,slice返回一個(gè)新的數(shù)組
            var obj = [].slice.call(obj);
            //var obj = [].slice.apply(obj);
            //注意: 截取的長(zhǎng)度為length屬性的值
        
        
  • 操作數(shù)組(改變?cè)瓟?shù)組)

    • 插入
      • 從最前 arr.unshift(element1,elementN) , 返回值: length屬性值
      • 從最后 arr.push(element1,......elementN) , 返回值: length屬性值
        偽數(shù)組借用push 方法(從lenght的值開(kāi)始插入, 如果length的值為0,或者沒(méi)有, 則從索引(屬性)0 開(kāi)始插入)
        案例:
               0:0,
                 1:1,
             lenght: 2
           }
           //用apply方法借用
           [].push.apply(obj,[2,3,4]);//obj{0:0,1:1,2:2,3:3,4:4,length:5};
           //用call方法借用
           [].push.call(obj,5,6);//obj{0:0,1:1,2:2,3:3,4:4,5:5,6:6,length:7};
        
      • 任意: arr.splice(start: number, 0 ,element1,......elementN), 利用splice方法, 參數(shù)1: 要從什么位置開(kāi)始插入, 參數(shù)2: 要?jiǎng)h除的個(gè)數(shù), 設(shè)為0, 參數(shù)3.....N: 要插入的項(xiàng)
    • 刪除
      • 從最前 arr.shift() : 刪除最前面的一項(xiàng); 返回值: 刪除項(xiàng).
      • 從最后 arr.pop() ; 刪除最后一項(xiàng)(傳參無(wú)效); 返回值: 刪除項(xiàng).
      • 任意 arr.splice(start: number, deleteCount?: number) ;返回值: 刪除的項(xiàng)組成的數(shù)組,deleteCount=0,則返回的數(shù)組為空
    • 替換 arr.splice(start: number, deleteCount? : number , item1,item2......);
      返回值: 刪除的項(xiàng)組成的數(shù)組, deleteCount=0, 則返回空數(shù)組
    • 合并 concat()
      方法用于合并兩個(gè)或多個(gè)數(shù)組。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。
      splice()方法總結(jié)
    • 作用: 用來(lái)刪除 添加 替換 一個(gè)數(shù)組的內(nèi)容
      語(yǔ)法:
      • array.splice(start:number) ; 注意 :從起始值開(kāi)始刪除后面全部.
      • array.splice(start:number, deleteCount?: number); 注意: deleteCount >=0.
      • array.splice(start:number,deleteCount?: number, mixed?:item1,mixed?:item2,......)
        返回值: 刪除后每一項(xiàng)組成的數(shù)組
        案例:
        var obj = {
            0:1,
              1:2,
              length:2
        }
        var obj = [].splice.call(obj,0);//[1,2];
        //var obj = [].splice.apply(obj,[0]);
        //注意: 截取的長(zhǎng)度為length屬性的值
      
      
  • array轉(zhuǎn)換成string的方法 join()

    • 作用: 將數(shù)組或者一個(gè)類(lèi)數(shù)組轉(zhuǎn)換成一個(gè)字符串, 原數(shù)組不改變
      語(yǔ)法:
      str = arr.join(); // 返回的字符串默認(rèn)為","隔開(kāi)字符串的每一項(xiàng)
      str = arr.join("")// 分隔符為""空字符串
      str = arr.join(separator) // 以separator
      參數(shù): separator, 可選
      返回值: 所有的數(shù)組元素組成的字符串
    • forEach()方法 : 對(duì)數(shù)組的每一個(gè)元素,執(zhí)行一次提供的函數(shù)(參數(shù))

    語(yǔ)法:

    arr.forEach(callback(currentValue,index,array){

    ? //要執(zhí)行的代碼
    },this)

    arr.forEach(callback[,this]);

    參數(shù)的含義

    callback: 數(shù)組中每個(gè)元素都要執(zhí)行的函數(shù)

    ? 該函數(shù)有三個(gè)參數(shù)

    • currentValue(callback函數(shù)調(diào)用時(shí)的數(shù)組的當(dāng)前值,相當(dāng)于for循環(huán)時(shí)的arr[i])
    • index(索引) | 可選 :相當(dāng)于for循環(huán)時(shí)的i
    • array | 可選 :調(diào)用forEach()方法的數(shù)組

    this | 可選

    返回值

    undefined.

    對(duì)this的理解

    var obj = {
                name: "張山",
                age: 18,
                add: function (arr){
                    arr.forEach(function(v){
                        console.log("過(guò)%d年后"+this.name+                        (this.age + v) + "歲",v);
                    },this)
                }
            }
           obj.add([1,2,3,4]);//過(guò)1年后張山19歲....
    

    案例:

    //將一個(gè)字符串轉(zhuǎn)換成對(duì)象
    var str = "name=linyang&password=123";
    var obj = {};
    str.split("&").forEach(function(v){
        obj[v.split("=")[0]] = v.split("=")[1]
    })
    console.log(obj);//{name:"linyang",password:"123"};
    

    ?

    注意 : 沒(méi)有值得項(xiàng)會(huì)被跳過(guò), 像undefined 和 ""(空字符串) 不會(huì)被跳過(guò)

  • map()方法: 用來(lái)創(chuàng)建一個(gè)新的數(shù)組,返回的新數(shù)組 是 數(shù)組中每個(gè)元素調(diào)用 callback 函數(shù) 返回的結(jié)果組成

    語(yǔ)法:

    var newArr = arr.map(callback (currentVallue,index,array){

    //return 表達(dá)式;

    },[this])

    var newArr = arr.map(callbakc[,this])

    參數(shù)的含義:

    callback: 數(shù)組中每個(gè)元素要執(zhí)行的函數(shù)

    ? 該函數(shù)有三個(gè)參數(shù):

    • currentValue: callback的 第一個(gè)參數(shù), 數(shù)組正在處理的當(dāng)前元素
    • index | 可選: 數(shù)組正在處理的當(dāng)前元素的索引
    • array | 可選: map方法調(diào)用的數(shù)組

    this | 可選: 執(zhí)行callback函數(shù)時(shí), 使用的數(shù)組

    返回值:

    一個(gè)新的數(shù)組, 每個(gè)元素都是回調(diào)函數(shù)執(zhí)行的結(jié)果

    注意 : 包括undefined和""空字符串

    ? 調(diào)用map方法的數(shù)組發(fā)生改變

    案例:

    //利用map來(lái)拼字符串生成一個(gè)表格
    <div></div>
    <script>
            //利用map來(lái)拼字符串生成一個(gè)表格
        var data = [
           { name: "linyang", age: 18, gender: "man" },
          { name: "jay", age: 38, gender: "man" },
          { name: "lanxiaoyun", age: 17, gender: "girl" }
            ];
         var html =
                '<table border="1"><tbody>'
                + data.map(function (v) {
                    return "<tr>" +
                        "<td>" + v.name + "</td>" +
                        "<td>" + v.age + "</td>" +
                        "<td>" + v.gender + "</td>" +
                        "</tr>"
                }).join("") + 
            '</tbody></table>'
         document.querySelector("div").innerHTML = html;
    </script>
    
    結(jié)果.png

? 注意: html結(jié)構(gòu)省略了

  • reduce()方法: 累計(jì)器 和 數(shù)組中的每一個(gè)元素應(yīng)用一個(gè)函數(shù), 最終累計(jì)成一個(gè)值. 累計(jì)器有一個(gè)初始值, 數(shù)組中的每一個(gè)元素和上一次執(zhí)行結(jié)果的累計(jì)器進(jìn)行應(yīng)用一個(gè)函數(shù); 初始值可以是一個(gè)數(shù)字, 比如初始值sum = 0, 和數(shù)組[1,2,3,4]進(jìn)行應(yīng)用, 則最終累計(jì)結(jié)果是: 10

    var total = [1,2,3,4].reduce(function(sum,value){
        return sum + value;
    },0)
    

    ?

    語(yǔ)法:

    arr.reduce(callback[, initialValue])

    參數(shù):

    callback: 數(shù)組和累計(jì)器要應(yīng)用的函數(shù)

    ? 該函數(shù)有四個(gè)參數(shù):

    ? accumulator: 上一次調(diào)用的的返回值,初始值為initialValue

    ? 沒(méi)有initialValue時(shí),為數(shù)組的第0項(xiàng),reduce會(huì)從

    ? 索引1開(kāi)始執(zhí)行;

    ? currentValue:數(shù)組中正在處理的元素;

    ? currentIndex: 數(shù)組中正在處理的元素的索引;

    ? array: 調(diào)用reduce的數(shù)組

    initialValue | 可選 : 調(diào)用callback時(shí)的初始值, 可以是簡(jiǎn)單number ,

    ? 數(shù)組或者對(duì)象等等.

    返回值: 函數(shù)累計(jì)處理的結(jié)果

    案例:

    //將一個(gè)字符串轉(zhuǎn)換成一個(gè)對(duì)象
    var str = "name=linyang&password=123";
    var obj = str.split("&").reduce(function(acc,v){
        acc[v.split("=")[0]] = v.split("=")[1];
          retur acc;
    },{})
    console.log(obj);
    

    ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容