簡析數組方法

ES5數組方法

1、ES

  • push()接受多個參數,並將這些參數放置於數組尾部,返回新數組的長度,原始數組發生改變。

  • pop()不接收參數,從數組尾部刪除一個元素,並返回這個刪除的元素,原數組發生改變。

  • unshift()接受多個參數並,將這些參數放置於數組頭部,返回新數組的長度,原數組發生改變。

  • shift()不接受參數,從數組的頭部刪除一個元素,並返回這個刪除的元素,原數組發生改變。

  • slice()如果是一個參數,那麼該參數表示的索引開始截取,直至數組結束,返回截取的數組,原數組不發生改變。
    如果有兩個參數,從第一個參數表示的索引開始截取,到第二個參數表示的索引結束,不包括第二個參數對應的索引位上的元素。

  • splice() 如果一個參數,那麼從該參數表示的索引開始截取,直至數組結束,返回截取的數組,原數組發生改變。
    如果有兩個參數,從第一個參數表示索引,第二個參數表示的是截取的長度。
    如果有三個及以上參數,從第一個參數表示索引,第二個參數表示的是截取的長度,後邊的會從截取的位置添加至原數組裏。

  • reverse()數組翻轉參數無意義。

  • sort()排序(按照字符串按位比較的方式來判斷大小)

			var arr = [2,11,50,7,9];
			
			console.log(arr.sort());//按照字符串按位比較方式來判斷大小的
			
			arr.sort(function(a,b){
				return a - b;//從小到大
				return b-a;//從大到小
			})
			console.log(arr);
  • join()將數組中元素以參數來進行拼接
			var arr = [1,2,3,4];//"1234"
			var str = arr.join("-----");
			console.log(str,arr)
  • concat()合併數組,將參數放到原數組裏,如果參數是一個數組,把數組中的元素提出來,放到原數組中。
  • for遍歷數組;(不用for in遍歷:我們無法保證我們引入的js是否會採用prototype擴展原生的Array)
//for遍歷數組
				var arr = ["a","b","c","d"];
				for(var i = 0; i < arr.length; i++){
					console.log(arr[i]);
			}

2、ES5新增數組方法;

  • indexOf() 找出數組中是否有給定值的元素,並返回找到的第一個元素的索引值;如果沒有則返回-1。
  • forEach() 如果不接受參數,遍歷數組中每一個元素。
    如果接受參數,分別爲:item, index, array, (用不到時可以不寫);item 表示每次迭代的元素;index 表示每次迭代元素的下標;array 表示原數組
var arr = [20,13,11,8,0,11];
var min = arr[0]; //假設數組的第一個元素的爲最小值

arr.forEach(function(item,index,array){

	//輸出數組的每個元素及其對應的下標
	console.log(index,item); 
	
	//輸出數組中值爲奇數的元素
	if(item%2){ 
		console.log(item); 
	}
	
	//練習三:求數組的最小值
	if(item<min){
		min = item;
	}
})
alert(min);

  • map()返回一個新數組,新數組是原數組的映射;不改變原數組的值;新數組的元素值是每次函數return的返回值;若不寫return,接收的新數組的元素值將全爲空;
var arr = [20,13,11,8,0,11];
var brr = arr.map(function(item)){

	//將數組的每個元素都將增加到原來的1.2倍
	return item*1.2;
	// 此時brr爲a數組每個元素的1.2倍

	//若return 1,則新數組的每個元素值均爲1
	return 1;
}

  • filter()過濾元素,返回一個新數組;新的數組由每次函數返回值爲true對應的元素組成;原數組不受影響;
var arr = [20,13,11,8,0,11];
var brr =arr.filter(function(item)){
	//返回值爲奇數的元素
	return item%2;
}

  • some() return返回的值只要有一項爲true,最終的返回值就爲true,不會繼續遍歷後邊的元素;
    若沒有一項滿足返回值爲true的,就返回false;原數組不受影響;
var arr = [20,13,11,8,0,11];
var brr = arr.some(function(item){
	return item>10;
})
alert(brr); //true

  • every() 對數組的每一項執行給定的函數,假如該函數每一項都返回true,最後結果才爲true;
    只要有一項返回值爲false,最後結果就是false。且後邊的元素都不會再繼續執行函數;
    原數組不受影響;
var arr = [20,13,11,8,0,11];
var brr = arr.every(function(item){
	return item>10;
})
alert(brr); //false

  • reduce() 返回值是最後一次函數調用的返回值;
    不寫return時,默認返回undefined;
    運行機制:一開始,prev代表數組第一個元素,next指向數組第二個元素 ;函數有個返回值,會作爲下次的prev值;當給方法第二個參數值時,prev從傳的第二個參數值開始,next從第一個元素值開始
var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
	console.log(prev+"---"+next);
	return 4;
})
console.log(res);

/*
分析:
一開始,prev代表數組第一個元素,next指向數組第二個元素  1---4
函數有個返回值,會作爲下次的prev值
4---5
4---7
4---8
4---10
*/



//reduce()還可以有第二個參數

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
	console.log(prev+"---"+next);
	return prev+next;
},100)  //prev從傳的第二個參數值100開始,next從第一個元素值開始
console.log(res);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章