數組經常使用的12種方法

數組中的經常使用的12個方法:push、pop、unshift、shift、slice、splice、concat、reverse、sort、join、toString、indexOf。

首先咱們要明確如下幾點:面試

一、方法是幹啥用的;
    二、每種方法傳遞的參數有多少個,每個是什麼樣的數據類型,每個參數所表明的意思是什麼?
    三、返回值類型,和表明的意思;
    四、重要的:經過此方法,原有的數組是否改變;

數組的這12個方法是面試時常常會問到的內容,你們能夠按照以上四個維度來進行記憶和學習。數組

(一)關於數組的增長、修改、刪除

push()

一、push()向數組末尾增長元素;
   參數:不肯定個數,並且類型也不肯定,要添加的新元素;
   返回:新增長後的數組長度;
   原有數組改變;
   ![圖片描述][1]
   
   擴展:不想使用push,也想向數組的末尾增長內容
        ary[ary.length] = 10;
        即ary.splice(ary.length, 0, 10);

unshift()

二、unshift()向數組開頭增長元素
    參數:不肯定個數,並且類型也不肯定,要添加的新元素
    返回:新增長後的數組長度
    原有數組改變
    ![圖片描述][2]

shift()

三、shift()刪除數組第一個元素;
    返回值:刪除了的值;
    原有數組改變;
    ![圖片描述][3]

pop()

四、pop()刪除數組最後一個元素
    返回值:刪除了的值;
    原有數組改變;
    ![圖片描述][4]
   
    擴展:不用pop想刪除最後一項的內容
        ary.length--;//ary.length-=1或者ary.length=ary.length-1
        即ary.splice(ary.length-1);
 
 【shift() 和 pop(),分別是指從一個數據中的最前面和最後面刪除一個值,並返刪除值。】

splice()

五、splice():它既能實現刪除,也能實現增長,還能實現修改
    返回的是:刪除的項當成新的數組返回;
    原有數組是改變的;

 [刪除]
 ary.splice(n,m)  從索引n開始,刪除m個元素,把刪除的內容以一個新數組的方式返回,原來的數組改變
 ary.splice(n)    從索引n開始,刪除到數組的末尾
 ary.splice(0)    把原來的數組中每一項都刪除掉(清空數組每一項),把以前的每一項的值以一個新的數組返回(把以前的數組克隆了一份如出一轍的,這樣的克隆會修改原來的數組)
 ary.splice()     數組中一項都沒有刪除,返回的是一個空數組

 [修改]
 ary[2] = 340;    利用對象的操做的方式修改某一項的值
 splice(n,m,x)    從索引n開始,刪除m個,用x替換刪除的部分,把刪除的內容以一個新的數組返回,原來的數組改變

 [增長]
 splice(n,0,x)   從索引n開始,一個都不刪除(返回結果是一個空數組),把x增長到索引n的前面,原來的數組改變

(二)關於數組的截取和拼接

slice()

一、slice():實現數組的截取,在原來的數組中截取某一部分
   slice(n,m)         從索引n開始,找到索引爲m處(不包含m),將找到的部分已一個新的數組返回,原來的數組不變
   slice(n)           從索引n開始一直找到數組的末尾
   slice(0)/slice()   把原來的數組克隆一份如出一轍的新數組返回
   
   slice有幾種特殊的狀況:
   n或者m爲負數
   n>m
   n或者m已經超出了整個數組的範圍

concat()

2)concat:把兩個數組拼接到一塊兒,原來的數組不變
  ary1.concat(ary2)  把ary2和ary1進行拼接,ary2在後面
  ary1.concat()      把ary1克隆一份如出一轍的數組

(三)把數組轉換爲字符串

toString()

1)toString:把數組轉換爲字符串,原來的數組不變
    var ary = [12, 23, 34, 45];
    var res = ary.toString();
    console.log(res);//->"12,23,34,45"

join()

2)join()爲數組添加指定的分隔符
  參數:能夠有,能夠是一個分割符(不寫默認是",");
  返回:分割開後的字符串;
  原有數組不變;
    var ary = [12, 23, 34, 45];
    var res = ary.join("+");
    console.log(res);//->"12+23+34+45"

擴展:eval->JS中把字符串變爲JS表達是執行的一個方法
    console.log(eval("12+23+34+45"));//->114

    把數組中的每一項進行相加求和
    var ary = [12, 23, 34, 45];
    console.log(eval(ary.join("+")));

(四)數組的排序和排列

reverse

1)reverse:把數組倒過來排列,原來的數組改變

sort

2)sort:給數組進行排序,原有的數組會發生改變
  ary.sort() 這樣的話只能處理10之內的數字進行排序,由於它是按照UNICODE編碼的值進行排序的
  ary.sort(function (a, b) {return a - b;}); 由小到大排序
  ary.sort(function (a, b) {return b - a;}); 由大到小排序

(五)只有在標準瀏覽器中兼容的方法,在IE6~8下不兼容的

indexOf / lastIndexOf

1)indexOf / lastIndexOf (字符串中也有這兩個方法,可是字符串的這兩個方法兼容全部的瀏覽器,而數組的這兩個方法是不兼容的)
 當前內容在數組中第一次/最後一次出現位置的索引,若是數組中沒有這一項,返回的結果是-1,若是有這一項,索引是幾就返回幾,原來的數組不變

 這樣的話咱們就能夠驗證當前的內容在數組中是否存在了
    var ary = [12, 34, 230, 54, 34, 25];
    if (ary.indexOf("數組") > -1) {
        //說明"數組"在數組中存在
    } else {
        //說明"數組"在數組中不存在
    }

forEach

2)forEach / map 都是用來遍歷數組中的每一項的
  forEach:數組中有幾項,咱們的函數就執行幾回;
  函數中的形參:item->當前遍歷的數組中這一項的值 index->當前這一項的索引
  原來的數組不變
    ary.forEach(function (item, index) {
        console.log(item, index);
    });

map

3)map和forEach的語法是同樣的,可是比forEach多加了一個把原來內容進行替換的功能
  原來數組不變
  返回的新數組是每一項都乘以了10
    var newAry = ary.map(function (item, index) {
        return item * 10;
    });
    console.log(newAry);//->[120, 340, 2300, 540, 340, 250]

(六)更多的數組方法:

Array.prototype

var ary = [12, 34, 230, 54, 34, 25];
 console.dir(Array.prototype);
相關文章
相關標籤/搜索