filter()绣的、map()、some()欲账、every()屡江、forEach()、indexOf()赛不、lastIndexOf()惩嘉、reduce()
filter
對數(shù)組中的每個元素都執(zhí)行一次指定的函數(shù)(callback),并且創(chuàng)建一個新的數(shù)組踢故,該數(shù)組元素是所有回調(diào)函數(shù)執(zhí)行時返回值為 true 的原數(shù)組元素宏怔。它只對數(shù)組中的非空元素執(zhí)行指定的函數(shù),沒有賦值或者已經(jīng)刪除的元素將被忽略畴椰,同時,新創(chuàng)建的數(shù)組也不會包含這些元素鸽粉⌒敝回調(diào)函數(shù)可以有三個參數(shù):當(dāng)前元素,當(dāng)前元素的索引和當(dāng)前的數(shù)組對象触机。如參數(shù) thisObject 被傳遞進來帚戳,它將被當(dāng)做回調(diào)函數(shù)(callback)內(nèi)部的 this 對象玷或,如果沒有傳遞或者為null,那么將會使用全局對象片任。filter 不會改變原有數(shù)組偏友,記住:只有在回調(diào)函數(shù)執(zhí)行前傳入的數(shù)組元素才有效对供,在回調(diào)函數(shù)開始執(zhí)行后才添加的元素將被忽略位他,而在回調(diào)函數(shù)開始執(zhí)行到最后一個元素這一期間,數(shù)組元素被刪除或者被更改的产场,將以回調(diào)函數(shù)訪問到該元素的時間為準(zhǔn)鹅髓,被刪除的元素將被忽略。
let array = [1, 2, 3, 4, 5];
let arr1 = array.filter(item => {
// 過濾掉小于3的,返回新數(shù)組
return item > 2;
});
console.log(array);
console.log(arr1);
map
對數(shù)組中的每個元素都執(zhí)行一次指定的函數(shù)(callback)京景,直到此函數(shù)返回 true窿冯,如果發(fā)現(xiàn)這個元素,some 將返回 true确徙,如果回調(diào)函數(shù)對每個元素執(zhí)行后都返回 false 醒串,some 將返回 false。它只對數(shù)組中的非空元素執(zhí)行指定的函數(shù)鄙皇,沒有賦值或者已經(jīng)刪除的元素將被忽略芜赌。
let array = [1, 2, 3, 4, 5];
let arr1 = array.map(item => {
// 數(shù)組每項乘以2,返回新數(shù)組
return item * 2;
});
console.log(array);
console.log(arr1);
some
let array = [1, 2, 3, 4, 5];
let value1 = array.some(item => {
// 有沒有大于4的項 true
return item > 4;
});
let value2 = array.some(item => {
// 有沒有大于5的項 false
return item > 5;
});
console.log(value1);
console.log(value2);
every
對數(shù)組中的每個元素都執(zhí)行一次指定的函數(shù)(callback),直到此函數(shù)返回 false育苟,如果發(fā)現(xiàn)這個元素较鼓,every 將返回 false,如果回調(diào)函數(shù)對每個元素執(zhí)行后都返回 true 违柏,every 將返回 true博烂。它只對數(shù)組中的非空元素執(zhí)行指定的函數(shù),沒有賦值或者已經(jīng)刪除的元素將被忽略
let array = [1, 2, 3, 4, 5];
let value1 = array.every(item => {
// 是不是都大于0 true
return item > 0;
});
let value2 = array.every(item => {
// 是不是都大于1 false
return item > 1;
});
console.log(value1);
console.log(value2);
forEach
let array = [1, 2, 3, 4, 5];
let sum = 0;
let arr1 = array.forEach(key => {
// 累加奇數(shù)項漱竖,原始數(shù)組變化
if (key % 2 !== 0) {
console.log(key);
sum += key;
}
});
console.log(array);
console.log(arr1);
console.log(sum);
indexOf
正向搜索
let array = [1, 2, 3, 4, 5];
let value1 = array.indexOf(3);
let value2 = array.indexOf(5);
let value3 = array.indexOf(6);
console.log(value1);
console.log(value2);
console.log(value3);
lastIndexOf
反向搜索
lastIndexOf(searchElement: number, fromIndex?: number): number
fromIndex 開始搜索的位置禽篱,默認為數(shù)組的長度(length),在這樣的情況下馍惹,將搜索所有的數(shù)組元素躺率。搜索是反方向進行的。 (注意万矾,參數(shù)2使用的方法悼吱,這里不太對)
let array = [1, 2, 3, 4, 5];
let value1 = array.lastIndexOf(3);
let value2 = array.lastIndexOf(5);
let value3 = array.lastIndexOf(6);
let value4 = array.lastIndexOf(3, 4);
console.log(value1);
console.log(value2);
console.log(value3);
console.log(value4);
reduce
函數(shù)接收一個回調(diào)函數(shù)和初始值,將數(shù)組中的每個值(從左到右)良狈,使用初始值并根據(jù)回調(diào)函數(shù)開始進行計算后添,累加計算結(jié)果,最終成為一個值.
let array = [1, 2, 3, 4, 5];
let value1 = array.reduce((total, item) => total + item, 0);
let value2 = array.reduce((total, item) => total * item, 1);
console.log(value1);
console.log(value2);