這里給大家分享下我搜索到的幾個ES6常用陣列方法及模擬實作,廢話不多說,上代碼

Array.from
可以將一個類陣列轉換成陣列
在出現Array.from這個方法之前,我們轉換類陣列的方法:
Array.prototype.slice.call(arguments)
使用Array.form
Array.from(arguments, item => {
return item;
})
Array.prototype.findIndex
查找陣列中對應的索引
let arr = [1,2,3,4,5]; const index = arr.findIndex(item => item === 1); // output:0
模擬實作findIndex
Array.prototype.findIndex = function(callback){
for(let i = 0; i<this.length; i++){
if( callback(this[i]) ){
return i;
}
}
return -1;
}
Array.prototype.find
查找陣列中的某個元素 let arr = [1,2,3,4]; arr.find(item => item > 2); // output: 3
模擬實作find
Array.prototype.find = function(callback) {
for(let i = 0; i < this.length; i++){
let flag = callback(this[i]);
if(flag){
return this[i]
}
}
return undefined;
}
Array.prototype.map
map方法創建一個新陣列,其結果是該陣列中的每個元素都呼叫一個提供的函式后回傳的結果 const arr = [1,2,3]; arr.map(item => item * 2) // output: [2,4,6]
模擬實作map
Array.prototype.map = function(callback) {
let newArr = [];
for(let i = 0; i < this.length; i++){
let result = callback(this[i]);
newArr.push(result);
}
return newArr;
}
注意這里提個小只是,通過map的模擬實作應該可以大致明白為什么map和foreach不能跳出回圈
Array.prototype.reduce
方法對累計器和陣列中的每個元素(從左到右)應用一個函式,將其簡化為單個值
const arr = [2,3,4];
// output: 9
const sum = arr.reduce((sum, item) => {
sum += item;
return sum;
},0);
模擬實作reduce
Array.prototype.reduce = function(callback, initialValue){
let sum = initialValue || this[0];
if(!sum){
return;
}
for(let i = 0; i < this.length; i++){
sum = callback(sum, this[i], i , this);
}
return sum;
}
Array.prototype.some
陣列中的元素,有一個滿足條件,則回傳true var arr = [1, 2, 3]; arr.some(item => item > 2); // output: true
模擬實作some
Array.prototype.some = function(callback) {
for(let i = 0; i < this.length; i++) {
if(callback(this[i])){
return true;
}
}
return false;
}
Array.prototype.every
陣列中的所有元素都滿足條件,則回傳true var arr = [1, 2, 3]; arr.every(item => item > 2); // output: false
模擬實作every
Array.prototype.every = function(callback){
for(let i = 0; i < this.length; i++){
if(!callback(this[i])){
return false;
}
}
return true;
}
Array.prototype.filter
filter方法創建一個新陣列, 其包含通過所提供函式實作的測驗的所有元素 let arr = [1,2,3]; arr.filter(item => item > 2); // output: [3]
模擬實作filter
Array.prototype.filter = function(callback) {
let newArr = [];
for(let i = 0; i < this.length; i++){
let flag = callback(this[i]);
if(flag){
newArr.push(this[i])
}
}
return newArr;
}
如果對您有所幫助,歡迎您點個關注,我會定時更新技術檔案,大家一起討論學習,一起進步,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413100.html
標籤:其他
下一篇:async await的理解
