文章目錄
- js(ES6+)數組學習
- 1.Array.prototype.forEach(fn)
- 2.Array.prototype.map(fn)
- 3.Array.prototype.filter(fn)
- 4.Array.prototype.reduce(fn)
- 5.Array.prototype.some(fn) every
- 6.Array.prototype.find(fn)
- 7.Array.prototype.includes(item)
js(ES6+)數組學習
1.Array.prototype.forEach(fn)
遍歷數組,傳一個函數,每次遍歷會運行該函數
const arr = [45, 7, 2, 4, 1, 57, 3]// for (const item of arr) {
// console.log(item);
// }// arr.forEach(function(item){
// console.log(item);
// });//遍歷時函數里其實有三個參數,需要的時候,可以把數據下標和數組本身
arr.forEach(function(item,index,arr){console.log(item,index,arr);
});
2.Array.prototype.map(fn)
數組映射,傳入一個函數,映射數組中的每一項,不會改動原數組,然后返回一個新的數組!
const arr = [45, 7, 2, 4, 1, 57, 3]//數組每一項翻倍
const newArr = arr.map(function(item){return item*2;
});
console.log(newArr)//隨意用,比如返回一個對象
const newArr1 = arr.map(function(item){return{n : item,doubleN : item*2};
});console.log(newArr1,'newArr1')
3.Array.prototype.filter(fn)
數組篩選,傳入一個函數,僅保留滿足條件的項。不會改變原數組,然后返回一個新數組!
const arr = [45, 7, 2, 4, 1, 57, 3]
//返回 和原數組一樣的內容
const newArr = arr.filter(function (item){return true;
});//返回新數組是個空數組,false把每一項都排除掉了
const newArr1 = arr.filter(function (item){return false;
});//返回奇數數組
const newArr2 = arr.filter(function (item){return item % 2 !== 0;
});
console.log(newArr2)
4.Array.prototype.reduce(fn)
數組聚合,傳入一個函數,對數組每一項按照該函數的返回聚合。 數組聚合相對復雜一點,但是多用于求和,簡單理解很多項揉成一項就能用reduce。
const arr = [45, 7, 2, 4, 1, 57, 3]const sum = arr.reduce(function(a,b){return a+b;
},0);
console.log(sum,'求和')
/*** 詳細分析:* reduce函數里 有兩個參數,一個function,第二個默認值0。到底是怎么運行的:* reduce一開始在內部開了一個空間,記錄一開始的結果(用result代表)就是第二個參數,為0。* 然后function開始運行,把result為0這個結果給第一項a,我們數組arr第一項 45給b,a始終是* 當前的結果,當前結果是0,45給b,返回a+b=45,result就更新為45,這時候又把result=45 傳給a,* arr第二個元素7給b,返回 a+b=52,result就更新為52,再次傳給a,往復下去。直到b為3,* return a+b,最終結果為119*/
5.Array.prototype.some(fn) every
const arr = [45, 7, 2, 4, 1, 57, 3]
//只要有一個元素滿足條件就返回true,否則false
const result = arr.some(function (item) {return item > 50;
});
console.log(result,'結果')//所有元素都要滿足條件返回true,否則false
const result1 = arr.every(function (item) {return item > 0;
});
console.log(result1,'結果1')
6.Array.prototype.find(fn)
傳入一個函數,找到數組中第一個能通過改函數測試的項
返回滿足條件的元素,但是有兩個元素滿足條件時候,返回的還是第一個元素,怎么解決。用filter就行。
const arr = [45, 7, 2, 4, 1, 57, 3,54]
const result = arr.find(function(item){return item > 50;
});
console.log(result)
7.Array.prototype.includes(item)
判斷數組中是否存在item,判定規則使用的是Object.is。傳的不是函數了,傳的是元素。//object.is({},{}) object.is(1,1),object.is理解為===
const arr = [45, 7, 2, 4, 1, 57, 3,54]
const result = arr.includes(2)
console.log(result)