1. 程式人生 > >陣列的 filter、sort、map等ES5的各種迴圈遍歷

陣列的 filter、sort、map等ES5的各種迴圈遍歷

首先宣告,以下都是 ES5 的方法,某些很少使用,但並非 ES6 新方法

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>迴圈</title>
</head>
<script>
	let arr = ['apple', 'orange', 'banana'];

	console.log('for迴圈')
	// i++ 的 for 迴圈
	for(var i=0; i<arr.length; i++){
		console.log(arr[i])
	}
	console.log('')



	// forEach
	console.log('forEach迴圈')
	arr.forEach(function(val, index, arr){
		console.log(this, val, index, arr)
	}, 123)
	// arr.forEach((val, index, arr) => {	// 使用箭頭函式,此時 this 指向 window
	// 	console.log(this, val, index, arr)
	// }, 123)
	console.log('')



	// map 做資料互動“對映”,正常情況下,需要配合return,返回值是一個新的陣列,若沒有 return,相當於 forEach
	// 注:平時只要用 map 基本都需要 return,否則直接用 forEach 就行。
	console.log('map迴圈')
	let arr2 = [
		{title: 'aaa', read: 100, hot: true},
		{title: 'aaa', read: 100, hot: true},
		{title: 'aaa', read: 100, hot: false},
		{title: 'aaa', read: 100, hot: true},
	]
	arr2.map(function (item, index, arr) {	
		console.log(item, index, arr)
	})
	console.log('')
	// 可用來:重新整理資料結構
	let newArr2 = arr2.map((item, index, arr) => {
		let json = {};
		json.t = `${item.title}`;
		json.r = item.read+100;
		json.h = item.hot == true && 'yes';
		return json;
	})
	console.log(newArr2)
	console.log('')



	// filter 過濾,過濾一些不合格的資料,如果返回 true 就留下來
	console.log('filter遍歷')
	let newArr3 = arr2.filter((item, index, arr)=>{
		return item.hot == true
	})
	console.log(newArr3)
	console.log('')



	// some 類似查詢,數組裡面某一個元素符合條件,就返回 true
	console.log('some遍歷')
	let newArr4 = arr.some((val, index, arr)=>{
		return val == 'apple'
	})
	console.log(newArr4)
	// 作用:判斷陣列中是否有某個值
	function findInArray(arr, item){
		return arr.some((val, index, arr)=>{
			return val == item;
		})
	}
	console.log(findInArray(arr, 'apple'))
	console.log('')



	// every 數組裡面所有的元素都要符合條件才返回 true 
	console.log('every遍歷')
	let arr5 = [1,3,5,7];
	var newArr5 = arr5.every((val, index, arr)=>{
		return val%2 == 1;
	})
	console.log(newArr5)
	console.log('')



	// reduce 作用:求陣列的和,或積
	console.log('reduce遍歷')
	let arr6 = [2,2,3];
	let result6 = arr6.reduce((prev, cur, index, arr)=>{
		// return prev+cur;
		// return Math.pow(prev,cur);	// 次方
		return prev**cur;	// 次方
	})
	console.log(result6)
	console.log('')



	// reduceRight 作用:與 reduce 相同,但從右向左。


</script>
<body>
	
</body>
</html>

1、filter:按條件過濾
    1.1、獲取所有符合條件的值
    
    1.2、陣列去重
    
    注:
        filter() 方法建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。
        filter() 不會對空陣列進行檢測。
        filter() 不會改變原始陣列。

2、sort:
    語法:arrayObject.sort(sortby)
    注意:sortby必須是函式,規定排序順序。可選引數
    返回值:對陣列的引用。請注意,陣列在原陣列上進行排序,不生成副本。
    2.1、給數字排序
    
    2.2、給字母排序(是根據 Unicode 碼排序的)
    

3、map:
    建立新陣列,不改變原陣列
    回撥函式引數,item(陣列元素)、index(序列)、arr(陣列本身)