添加和刪除元素的方法
1.push & pop
var arr1 = [1,2,3,4,5,6];
// push:從尾部添加元素,返回元素的個(gè)數(shù) / pop:從尾部刪除元素弱判,返回被刪除的元素
var result2 = arr1.push('aa');
// 結(jié)果:arr1 = 1,2,3,4,5,6,aa result2 = 7(數(shù)組的個(gè)數(shù))
var result = arr1.pop();
// 結(jié)果:arr1 = 1,2,3,4,5,6 result = aa(被拋棄的數(shù)組)
2.shift& unshift
var arr1 = [1,2,3,4,5,6];
// shift:從頭部刪除元素锥惋,返回被刪除的元素 / unshift:從頭部添加元素,返回添加元素后的個(gè)數(shù)
result = arr1.shift();
// 結(jié)果:arr1 = 2,3,4,5,6 result = 1(被拋棄的數(shù)組)
result = arr1.unshift('aa');
// 結(jié)果:arr1 = aa,2,3,4,5,6 result = 6(添加元素后數(shù)組的個(gè)數(shù))
3. splice / slice
/*
aplice: 拋棄一些元素遭商,在拋棄元素的位置插入一些元素,如果傳入兩個(gè)參數(shù)就只有刪除沒有追加淹父,如果只有一個(gè)參數(shù)就是從該位置刪除到最后 操作數(shù)組本身
第一個(gè)參數(shù):起始位置
第二個(gè)參數(shù):要?jiǎng)h除元素的個(gè)數(shù)
第三個(gè)參數(shù)及以后的參數(shù):追加的新元素,從刪除的位置開始追加
*/
arr1 = [1,2,3,4,5];
result = arr1.splice(1,2,3,4,5);
// 結(jié)果:arr1 = 1,3,4,5,4,5 result = 2,3(被拋棄的數(shù)組)
/*
slice:截取范圍 (左閉右開區(qū)間) 不操作數(shù)組本身
*/
arr1 = [1,2,3,4,5];
result = arr1.slice(2,5);
// 結(jié)果:arr1 = 1,2,3,4,5 result = 3,4,5(截取到的數(shù)組)
concat & join & sort & reverse
var arr1 = [1,2,3];
var arr2 = [true, 4,5];
result = arr1.concat(arr2);
// 結(jié)果:result=1,2,3,true,4,5 arr1 = 1,2,3 arr2 = true,4,5
// concat不操作數(shù)組本身困介,返回兩個(gè)數(shù)組連接后的數(shù)組
result = arr1.join('a');
// 結(jié)果:result=1a2a3 arr1 = 1,2,3
//不操作數(shù)組本身座哩,在每個(gè)元素之間添加內(nèi)容
arr1 = [3,6,1,14,28,9];
result = arr1.sort();
// sort 正序排序粮彤, 按字母順序排序
// 結(jié)果:result=1,14,28,3,6,9 arr1 = 1,14,28,3,6,9
arr1 = [3,6,1,14,28,9];
result = arr1.reverse();
// reverse: 將數(shù)組反轉(zhuǎn)
// 結(jié)果:result=9,28,14,1,6,3 arr1 = 9,28,14,1,6,3
ECMAScript5中Array特性
位置方法: indexOf & lastIndexOf
var arr = [1,2,3,4,5,4,3,2,1];
var index = arr.indexOf(4);
// 結(jié)果: index = 3 返回第一次出現(xiàn)的位置
index = arr.indexOf(4,4);
// 結(jié)果: index = 5 返回從第一個(gè)參數(shù)位置開始第一次出現(xiàn)的位置
index = arr.lastIndexOf(4);
// 結(jié)果: index = 5 從后向前导坟,返回第一次出現(xiàn)的位置
迭代方法: every & filter & forEach & some & map
// every: 對(duì)數(shù)組的每一元素進(jìn)行函數(shù)的運(yùn)行,如果都返回true最后結(jié)果為true尘惧,如果有一個(gè)返回false則結(jié)果為false
var result = arr.every(function(item, index, array){ // item:元素項(xiàng)递递,index:索引啥么, array:數(shù)組本身
return item > 2;
});
// 結(jié)果: false
// some:和every相反贰逾,如果有一項(xiàng)返回true結(jié)果為true
// filter :對(duì)數(shù)組的每一個(gè)元素進(jìn)行函數(shù)運(yùn)行,把返回函數(shù)運(yùn)行的結(jié)果過濾出來
result = arr.filter(function (item, index, array) {
return item > 2;
});
// 結(jié)果: 3,4,5,4,3
//fotEach: 循環(huán)數(shù)組的每一項(xiàng)氯迂,并執(zhí)行一個(gè)方法
arr.forEach(function (item, index, array) {
item * 2;
});
// map :對(duì)數(shù)組的每一個(gè)元素進(jìn)行函數(shù)運(yùn)行,函數(shù)執(zhí)行完畢后 把新的結(jié)果返回
result = arr.map(function (item, index, array) {
return item * 2;
});
// 結(jié)果: result = 2,4,6,8,10,8,6,4,2
縮小方法: reduce & reduceRight
// reduce: 處理前一個(gè)值和當(dāng)前值的關(guān)系
var arr = [1,2,3,4,5,4,3,2,1];
result = arr.reduce(function (prev,cur,index,array) {
// 參數(shù)含義(前一個(gè)值囚戚, 當(dāng)前值轧简, 索引位置匾二, 數(shù)組)
return prev + cur; // 將前一個(gè)值和當(dāng)前值相加
});
// 結(jié)果: result = 25
// reduceRight : 從右側(cè)開始遍歷
result = arr.reduceRight(function (prev,cur,index,array) {
// 參數(shù)含義(前一個(gè)值, 當(dāng)前值皮璧, 索引位置分飞, 數(shù)組)
return prev + cur;
});
// 結(jié)果: result = 25