1、find()與findIndex()
find()方法睡蟋,用于找出第一個符合條件的數(shù)組成員踏幻,它的參數(shù)是一個回調函數(shù),所有數(shù)組成員依次執(zhí)行該回調函數(shù)戳杀,直到找出一個返回值為true的成員该面,返回該成員,反之信卡,最返回undefined隔缀。
[1,2,3,-1,6].find((n) => n < 0)
// 找出數(shù)組中第一個小于0的成員 -1
find()方法的回調函數(shù)可以接受三個參數(shù),以此為當前的值傍菇、當前的位置和原數(shù)組猾瘸。
findeIndex() 方法的用法與find()方法類似,返回第一個符合條件的數(shù)組成員的位置,如若全部不符合牵触,則返回 -1 可以快速查找某個元素在某個數(shù)組中出現(xiàn)的位置
var id = 66
data =[{
name:'測試',
id:55
},{
name:'findIndex',
id:66
}]
var currentIndex = (data||[]).findIndex((item) =>item.id === id);
// 1
2淮悼、filter()
filter()方法使用指定的函數(shù)測試所有元素,并創(chuàng)建一個包含所有通過測試元素的新數(shù)組荒吏。
filter 維數(shù)組中的每一個元素調用一次 callback函數(shù)敛惊,并利用所有使得 callback 返回 true 或 等價于 true 的值 的元素創(chuàng)建一個新數(shù)組。那些沒有通過 callback 測試的元素會被跳過绰更,不會被包含在新數(shù)組中瞧挤。filter 不會改變原數(shù)組。
var arr = [10, 20, 30, 40, 50]
var newArr = arr.filter(item => item > 30);
console.log(newArr); //[40, 50]
//數(shù)組去重
var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 0, 8, 6, 3, 4, 56, 2];
var arr2 = arr.filter((x, index,self)=>self.indexOf(x) === index)
console.log(arr2); // [1, 2, 3, 4, 5, 6, 7, 8, 0, 56]
3儡湾、forEach()
遍歷數(shù)組全部元素特恬,利用回調函數(shù)對數(shù)組進行操作,自動遍歷整個數(shù)組徐钠,且無法break中跳出循環(huán)癌刽,不可控,不支持return操作輸出尝丐,return只用于控制循環(huán)是否是跳出當前循環(huán)
回調有三個參數(shù):
1显拜、遍歷的數(shù)組內容
2、是對應的數(shù)組索引
3爹袁、是數(shù)組本身
var arr = [1,2,3,4,5,6];
arr.forEach((item,index) =>{
console.log(item)
})
4远荠、some() 和 every()
every() 與some都是js中數(shù)組的迭代方法,只返回布爾值
every()
判斷數(shù)組中是否每個元素都滿足條件失息,都滿足譬淳、返回true,反之盹兢,只要一個不滿足 返回 false邻梆。
some()
與every() 相反,一個滿足就返回true绎秒,都不滿足浦妄,返回false
// 判斷數(shù)組arr1是否全是偶數(shù)
// 判斷數(shù)組arr2是否至少有一個偶數(shù)
var arr1=[1, 2, 3, 4, 5];
var arr2=[1, 4, 6, 8, 10];
console.log(
arr1.every(function(value, index, array){
return value % 2 == 0;
})
); // false
console.log(
arr2.some(function(value, index, array){
return value % 2 == 0;
})
); // true
5、map()
map()方法返回一個新數(shù)組见芹,數(shù)組中的元素為原始數(shù)組元素調用函數(shù)處理后的值校辩。
map()方法按照原始數(shù)組元素順序依次處理元素。
map()不會對空數(shù)組進行檢測
map() 不會改變原始數(shù)組辆童。
var data =[1,2,3,4]
var arrayOfSquares = data.map(function(item){
return item*item
})
alert(arrayOfSquares); // [1,4,9,16]
6宜咒、reduce()
1、reduce() 方法接收一個函數(shù)作為累加器(accumulator)把鉴,數(shù)組中的每個值(從左到右)開始合并故黑,最終成為一個值儿咱。
array.reduce(callback,initialValue)
2、callback:執(zhí)行數(shù)組中每個值的函數(shù)场晶,包括4個參數(shù)混埠。
1.previousValue:上一次調用回調返回的值,或者是提供的初始值(initialValue)
2.currentValue:數(shù)組中當前被處理的元素
3.index:當前元素在數(shù)組中的索引
4.array:調用reduce的數(shù)組
// 獲取購物車中商品列表的價格總和
let goodList = [{id: 1, price: 10, qty: 5}, {id: 2, price: 15, qty: 2}, {id: 3, price: 20, qty: 1}]
let totalPrice = goodList.reduce((prev, cur) => {
return prev + cur.price * cur.qty
}, 0)
console.log(totalPrice) // 100
var arrString = 'abcdaabc'
// 獲取字符中中每個字母出現(xiàn)的次數(shù)
let count = arrString.split('').reduce(function(res, cur) {
res[cur] ? res[cur]++ : res[cur] = 1
return res
}, {})
console.log(count) // {a: 3, b: 2, c: 2, d: 1}