使用JavaScript數組經常須要對數組進行遍歷、迭代操做。而咱們經常使用的就是for語句對數組進行迭代。然而在ECMAscript5已經爲數組定義了不少迭代的方法,如:foreach、map、some、every、filter、reduce、find,如今咱們就來說講這些api的用法。面試
let arr = [1,2,3,4,5,6,7];
複製代碼
/* * 沒有返回值,只針對每一個元素調用func。 * 優勢:代碼簡介。 * 缺點:沒法使用break,return等終止循環 */
//ES5寫法
arr.forEach(function(item,index){
console.log(item); // 1 2 3 4 5 6 7
})
//ES6寫法
arr.forEach((item,index) => {
console.log(item); // 1 2 3 4 5 6 7
return item
})
複製代碼
/* * 有返回值,返回一個新的數組,每一個元素爲調用func的結果。 */
let newArr = arr.map((item,index) => {
return item*2
})
console.log(newArr); // [2,4,6,8,10,12,14]
複製代碼
/* * 返回一個Boolean,判斷是否有元素符合func,若是有一個符合條件,就會終止循環,返回true。 */
arr.some((item,index) => {
return item > 5; // true
})
複製代碼
/* * 返回一個Boolean,判斷每個元素是否都符合func,若是有一個不符合,就會終止循環,返回false。 */
arr.every((item,index) => {
return item < 10; //true
})
複製代碼
/* * 有返回值,返回一個符合func條件的數組的集合 */
let newArr = arr.filter((item,index) => {
return item > 3;
})
console.log(newArr); // [4,5,6,7]
複製代碼
/* * 讓數組中的前項和後項作某種運算,並返回運算結果 */
let res = arr.reduce((prev,next) => {
return prev + next;
})
console.log(res); // 28
複製代碼
/* * 不建立新數組,不改變元素組 * 在判斷中一旦某個元素符合func,立馬跳出循環,返回當前符合條件的元素 */
let res = arr.find((item,index) => {
console.log( 'arr[' + index + '] = ' item ); // arr[3] = 4
return item > 3;
})
console.log(res); // 4
複製代碼
這也是我最近在面試中遇到的問題總結,若有任何建議和疑問,歡迎小夥伴提出並指正! QQ : 1062256583 郵箱 : 1062256583@qq.comapi