1、經常使用方法(push,pop,unshift,shift,join)
push pop棧方法,後進先出
var a =[1,2,3];
console.log(a.push(40)); //4 返回數組的長度
console.log(a); //[1, 2, 3, 40]
var b =[1,2,3];
console.log(b.pop()); //3 返回最後一項
console.log(b); // [1, 2]
------------------------------------------------------------------------------------------------------------------
unshift shift 對列方法,先進先出
var a =[1,2,3];
console.log(a.unshift(40));//4 返回數組長度
console.log(a); // [40, 1, 2, 3]
var b =[1,2,3];
console.log(b.shift()); //1 返回取出的第一項
console.log(b); // [2, 3]
------------------------------------------------------------------------------------------------------------------
join方法,將數組合併成字符串
var aN=[1,2,3,4,5];
console.log(aN.join(''));//12345
console.log(aN.join('|'));//1|2|3|4|5javascript
2、排序方法(sort,reverse)
reverse 反轉方法,即將反轉數組順序
var arr = [1,2,3,4,5];
console.log(arr.reverse()); //[5, 4, 3, 2, 1]
------------------------------------------------------------------------------------------------------------------
sort方法,默認按數組升序進行排列,選把數組中全部項應用toString()方法,而後比較獲得的字符串,從字符串首位開始比較
var arr =[1,14,3,25,5];
console.log(arr.sort()); // [1, 14, 25, 3, 5]
按字符首字母升序排列結果是:[1, 14, 25, 3, 5],由於1最小,因此1,14最前
對於sort方法有一個比較函數,能夠擴展其功能
function compare(a,b){
if(a<b){
return -1;
}else if(a>b){
return 1;
}else{
return 0;
}
}
用上面的比較函數對數字進行排序,能夠獲得咱們想要的結果
console.log(arr.sort(compare)); // [1, 3, 5, 14, 25];
固然這個方法還能簡化;
console.log(arr.sort(function(a,b){return a-b}));
sort方法還有其它應用,例如對數組中項目進行隨機排序,擴展方法以下:
console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [3, 1, 14, 5, 25]
console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [5, 1, 3, 14, 25]
console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [1, 5, 3, 25, 14]
console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [5, 25, 14, 1, 3]
console.log(arr.sort(function(a, b){return Math.random()>.5 ? -1 : 1}));// [25, 5, 14, 3, 1]
執行了五次,獲得的結果均不相同java
3、concat方法
concat方法用於建立一個新數組
若是想要複製一個數組,用什麼方法,舉例以下;
var arr =[1,2,3,4,5];
var newArr = arr;
console.log(newArr);//[1, 2, 3, 4, 5]
newArr.push(6);
console.log(newArr);//[1, 2, 3, 4, 5, 6]
console.log(arr); //[1, 2, 3, 4, 5, 6]
可見newArr並非一個新數組,修改newArr會改變數組,由於數組不是基本數組類型,而是引用類型,因此用=賦值只不過是建立了一個新的引用,修改newArr時會修改堆內存的數據。
那麼如何獲得一個新的和原來同樣的數組呢?
var newArr1 = arr.concat();
console.log(newArr1);//[1, 2, 3, 4, 5]
newArr1.push(6);
console.log(newArr1);//[1, 2, 3, 4, 5, 6]
console.log(arr); //[1, 2, 3, 4, 5]
可見修改新數組不會對原數組產生影響。
concat方法除了複製數組外,主要用於數組的鏈接,使用concat方法後會返回一個新的數組
var aNumber = [1,2,3];
var aNumber2 = [4,5];
console.log(aNumber.concat(aNumber2)); //[1, 2, 3, 4, 5]
console.log(aNumber); //[1,2,3]
固然concat方法還支持字符串與數組的鏈接
console.log(aNumber.concat(7,8)); // [1, 2, 3, 7, 8]
console.log(aNumber.concat(7,[11,12])); //[1, 2, 3, 7, 11, 12]數組
4、slice方法
slice基於當前數組建立一個刪除某些項的新數組
var aN =[1,2,3,4,5];
var aN1 = aN.slice(0,2);//截取第0項到第1項
console.log(aN); //[1, 2, 3, 4, 5] 原數組不變
console.log(aN1); // [1, 2]
console.log(aN.slice(1,3));//[2,3] 截取第1項到第2項
即截取起始位置到結束位置之間的項,包括起始位置,但不包括結束位置
若是隻有一個參數,則截取該參數到當前數組末尾全部項
console.log(aN.slice(1));//[2, 3, 4, 5]
若是slice中的參數有負數,則用該負數加上數組的長度來肯定起始位置或結束位置
console.log(aN.slice(-2,-1));// [4] 至關於console.log(aN.slice(3,4));dom
5、splice方法
splice方法可用於對原數組的插入、刪除、修改,並不會建立一個新數組
var aN =[1,2,3,4,5];
aN.splice(1,2,'b'); //三個參數分別是起始位置,要刪除的項數,須要添加的元素
console.log(aN);// [1, "b", 4, 5] 起始位置刪除兩項獲得[1,4,5],而後將元素b插入起始位置
因爲splice的強大功能能夠實現刪除,插入,修改功能
aN.splice(0,1);//刪除第1項
aN.splice(1,1);//刪除第2項
aN.splice(0,0,'a')//在第0項前插入'a'
aN.splice(2,0,'a')//在第2項前插入'a'
aN.splice(0,1,'b') //將第0項替換成'b'
aN.splice(2,1,'b') //將第2項替換成'b'函數
6、位置方法(indexOf,lastIndexOf)
indexOf是獲得數組元素在數組中的位置,lastIndefOf是從數組末尾向開頭找
var aN = [3,4,2,6,5,9];
console.log(aN.indexOf(2)); //2
console.log(aN.indexOf(6)); //3
console.log(aN.lastIndexOf(2));//2
console.log(aN.lastIndexOf(6));//3spa
indexOf和lastIndexOf均可以接收兩個參數,第一個表示要查找的項,第二個表示查找的起來位置
var aN2 = [1,2,5,4,6,2,4,5,8,2];
console.log(aN2.indexOf(2,3));//5 從第4項開始算起,因此取的是第二個2,位置爲5
console.log(aN2.lastIndexOf(2,5));//5 從第6項即第二個2開始從尾往前找,因此找到是第6項那個2,它的位置是5
console.log(aN2.lastIndexOf(2,4));//1 從第5項即6這個數字從尾往前找,因此找到是第2項那個2,它的位置是1排序
7、迭代方法(every,filter,forEach,map,some)
every:對數組中的每一項運行給定函數,若是該函數對每一項都返回true,則返回true.
var aN=[1,2,3,4,5]
var bFlag = aN.every(function(item){
return item<6
})
console.log(bFlag);//trueip
var bFlag2 = aN.every(function(item){
return item<4
})
console.log(bFlag);//false
------------------------------------------------------------------------------------------------------------------
some:對數組中的每一項運行給定函數,若是該函數對任一項都返回true,則返回true.
var aN=[1,2,3,4,5]
var bFlag = aN.some(function(item){
return item==5
})
console.log(bFlag);//true
var aN=[1,2,3,4,5]
var bFlag = aN.some(function(item){
return item==6
})
console.log(bFlag);//false
------------------------------------------------------------------------------------------------------------------
filter:對數組中的每一項運行給定函數,返回該函數會返回true的項組成的數組
var aN=[1,2,3,4,5]
var aNewArr = aN.filter(function(item){
return item>2
})
console.log(aNewArr);// [3, 4, 5]
------------------------------------------------------------------------------------------------------------------
forEach:對數組中的每一項運行給定函數,這個方法無返回值
var aN=[1,2,3,4,5]
aN.forEach(function(item){
console.log(++item);
})
輸出:
2
3
4
5
6
------------------------------------------------------------------------------------------------------------------
map:對數組中的每一項運行給定函數,返回數組調用的結果組成的數組
var aN = [1,2,3,4,5]
var aNewArr = aN.map(function(item){
return ++item
})
console.log(aNewArr);//[2, 3, 4, 5, 6]內存
8、縮小方法(reduce,reduceRight)
reduce()方法從數組第一項開始,逐漸遍歷到最後一項,reduceRight()方法從數組最後一項開始,逐漸遍歷到第一項
var aN = [1,2,3,4,5]
var sum = aN.reduce(function(prev,cru,index,array){
console.log(prev,cru);
return prev+cru
})
console.log(sum);
輸出
1 2
3 3
6 4
10 5
15
------------------------------------------------------------------------------------------------------------------
var aN = [1,2,3,4,5]
var sum = aN.reduceRight(function(prev,cru,index,array){
console.log(prev,cru);
return prev+cru
})
console.log(sum);
輸出
5 4
9 3
12 2
14 1
15
------------------------------------------------------------------------------------------------------------------
除了求和也能夠進行其它運算,例如求數組中全部項的乘積
var aN = [1,2,3,4,5]
var sum = aN.reduce(function(prev,cru,index,array){
return prev*cru
})
console.log(sum);//120字符串
javascript中數組的功能至關強大,不管是sort方法仍是迭代方法(every,some,filter,forEach,map)或者縮小方法(reduce,reduceRight)均可以進行擴展,讓代碼執行效率更快,書寫簡單。