首先咱們要明確如下幾點:面試
一、方法是幹啥用的; 二、每種方法傳遞的參數有多少個,每個是什麼樣的數據類型,每個參數所表明的意思是什麼? 三、返回值類型,和表明的意思; 四、重要的:經過此方法,原有的數組是否改變;
數組的這12個方法是面試時常常會問到的內容,你們能夠按照以上四個維度來進行記憶和學習。數組
一、push()向數組末尾增長元素; 參數:不肯定個數,並且類型也不肯定,要添加的新元素; 返回:新增長後的數組長度; 原有數組改變; ![圖片描述][1] 擴展:不想使用push,也想向數組的末尾增長內容 ary[ary.length] = 10; 即ary.splice(ary.length, 0, 10);
二、unshift()向數組開頭增長元素 參數:不肯定個數,並且類型也不肯定,要添加的新元素 返回:新增長後的數組長度 原有數組改變 ![圖片描述][2]
三、shift()刪除數組第一個元素; 返回值:刪除了的值; 原有數組改變; ![圖片描述][3]
四、pop()刪除數組最後一個元素 返回值:刪除了的值; 原有數組改變; ![圖片描述][4] 擴展:不用pop想刪除最後一項的內容 ary.length--;//ary.length-=1或者ary.length=ary.length-1 即ary.splice(ary.length-1); 【shift() 和 pop(),分別是指從一個數據中的最前面和最後面刪除一個值,並返刪除值。】
五、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(n,m) 從索引n開始,找到索引爲m處(不包含m),將找到的部分已一個新的數組返回,原來的數組不變 slice(n) 從索引n開始一直找到數組的末尾 slice(0)/slice() 把原來的數組克隆一份如出一轍的新數組返回 slice有幾種特殊的狀況: n或者m爲負數 n>m n或者m已經超出了整個數組的範圍
2)concat:把兩個數組拼接到一塊兒,原來的數組不變 ary1.concat(ary2) 把ary2和ary1進行拼接,ary2在後面 ary1.concat() 把ary1克隆一份如出一轍的數組
1)toString:把數組轉換爲字符串,原來的數組不變 var ary = [12, 23, 34, 45]; var res = ary.toString(); console.log(res);//->"12,23,34,45"
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("+")));
1)reverse:把數組倒過來排列,原來的數組改變
2)sort:給數組進行排序,原有的數組會發生改變 ary.sort() 這樣的話只能處理10之內的數字進行排序,由於它是按照UNICODE編碼的值進行排序的 ary.sort(function (a, b) {return a - b;}); 由小到大排序 ary.sort(function (a, b) {return b - a;}); 由大到小排序
1)indexOf / lastIndexOf (字符串中也有這兩個方法,可是字符串的這兩個方法兼容全部的瀏覽器,而數組的這兩個方法是不兼容的) 當前內容在數組中第一次/最後一次出現位置的索引,若是數組中沒有這一項,返回的結果是-1,若是有這一項,索引是幾就返回幾,原來的數組不變 這樣的話咱們就能夠驗證當前的內容在數組中是否存在了 var ary = [12, 34, 230, 54, 34, 25]; if (ary.indexOf("數組") > -1) { //說明"數組"在數組中存在 } else { //說明"數組"在數組中不存在 }
2)forEach / map 都是用來遍歷數組中的每一項的 forEach:數組中有幾項,咱們的函數就執行幾回; 函數中的形參:item->當前遍歷的數組中這一項的值 index->當前這一項的索引 原來的數組不變 ary.forEach(function (item, index) { console.log(item, index); });
3)map和forEach的語法是同樣的,可是比forEach多加了一個把原來內容進行替換的功能 原來數組不變 返回的新數組是每一項都乘以了10 var newAry = ary.map(function (item, index) { return item * 10; }); console.log(newAry);//->[120, 340, 2300, 540, 340, 250]
var ary = [12, 34, 230, 54, 34, 25]; console.dir(Array.prototype);