一、遍曆數組的幾種方式 var arr = [1,2,3]; Array.prototype.test=function(){} arr.name='jq' 1、 for /* * index是number類型的,可以使用break,continue,return語句 * 可以遍歷對象 */ for ...
一、遍曆數組的幾種方式
var arr = [1,2,3];1、 for
Array.prototype.test=function(){} arr.name='jq'
/* * index是number類型的,可以使用break,continue,return語句 * 可以遍歷對象 */
for (var index = 0, length = arr.length; index < length; index++) { console.log(index); // 0, 1, 2 console.log(arr[index]); // 1, 2, 3 }
2、 for in 遍曆數組索引
/* * 除了遍曆數組元素外,還會遍歷自身可枚舉屬性,以及原型鏈上屬性 * 適用於普通對象,不適合數組遍歷 * 可以使用break,continue,return語句 */ for (var index in arr) { console.log(index); // 0, 1, 2, name, test console.log(arr[index]); // 1, 2, 3, jq, ƒ (){} }
3、 for of 遍曆數組元素值
/* * 只遍曆數組元素 * 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象 * 可以使用break,continue,return語句 */ for (var item of arr) { console.log(item); // 1, 2, 3 }
4、 forEach 對數組每個元素執行一次提供的函數
/* * 只遍曆數組元素 * 參數:item 數組元素當前值,index 數組索引,array 數組本身 * 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象 * break,continue,return語句無效 */ arr.forEach(function(item, index, array) { console.log(index); // 0, 1, 2 console.log(item); // 1, 2, 3 })
5、 map 對數組元素處理,並返回一個新數組,原始數組不會被改變
/* * 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象 * break,continue,return語句無效 * 參數:item 數組元素當前值,index 數組索引,array 數組本身 */ arr.map(function(item, index, array) { console.log(index); // 0, 1, 2 console.log(item); // 1, 2, 3 return 0; })
6、 reduce = map + filter
/* * reduce 使用回調函數迭代地將數組簡化為單一值 * 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象 * 參數:callback 和 初始值 * accumulator: 函數上一次調用的返回值 * item: item 數組元素當前值 */ (1) 省略初始值,則accumulator為 arr[0], item為arr[1], index為1 arr.reduce(function(accumulator, item, index, array) { return accumulator + item; //求數組元素和 }); 執行順序: 1 + 2 3 + 3 (2) 有初始值,則accumulator為initValue,item為arr[0], index為0 arr.reduce(function(accumulator, item, index, array) { return accumulator + item; //求數組元素和 }, 0); 執行順序: 0 + 1 1 + 2 3 + 3 優點:減少數組迭代次數(7) filter 返回符合指定條件的新數組
/* * 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象 * item: item 當前數組元素 */ arr.filter(function(item, index, array) { return (item > 1); }) 結果:[2, 3]
8、 find 返回符合指定條件的第一個元素/*
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象 * item: item 當前數組元素 */ arr.find(function(item, index, array) { return (item > 1); })
結果:2
二、遍歷對象的幾種方式 1、for 2、for in 3、將對象轉為數組Object.keys