參考位址:Array.prototype
介紹幾種常用的
Array.prototype.indexOf
Array.prototype.lastIndexOf
Array.prototype.every
Array.prototype.some
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.reduce
1、indexOf
indexOf()方法傳回在該數組中第一個找到的元素位置,如果它不存在則傳回-1
var _indexOf = function(){
const arr = [,,,,];
return arr.indexOf()!=-?true:false;
}
console.log(_indexOf());//false
2、lastindexOf
lastIndexOf() 方法傳回在該數組中最後一個找到的元素位置,和 indexof相反。
3、every()
every()可是檢測數組中的每一項是否符合條件
var _every = function(){
const arr = [,,,,,-];
const result = arr.every(function(item,index){
return item>;
});
return result;
}
console.log(_every());//false
4、some()
some()可以檢測數組中是否有某一項符合條件
var _some = function(){
const arr = [,,,,];
const result = arr.some(function(item,index){
return item >;
})
return result;
}
console.log(_some());//true
5、 forEach()
forEach為每個元素執行對應的方法
var _foreach = function(){
const arr = [,,,,]
for(const i of arr.keys()){
console.log(arr[i]);
}
}
_foreach();//1,2,3,4,5
6、 map()
map()對數組的每個元素進行一定操作(映射)後,會傳回一個新的數組
var _map = function(){
const arr = [
{first_name:"Colin",last_name:"Toh"},
{first_name:"Addy",last_name:"Osmani"},
{first_name:"Yehuda",last_name:"Katz"}
];
return arr.map(function(item,index){
item.full_name = [item.first_name,item.last_name].join(" ");
return item;
})
}
console.log(_map());
forEach 與map的差別
forEach:用來周遊數組中的每一項;這個方法執行是沒有傳回值的,對原來數組也沒有影響;數組中有幾項,那麼傳遞進去的匿名回調函數就需要執行幾次;每一次執行匿名函數的時候,還給其傳遞了三個參數值:數組中的目前項item,目前項的索引index,原始數組list;理論上這個方法是沒有傳回值的,僅僅是周遊數組中的每一項,不對原來數組進行修改;但是我們可以自己通過數組的索引來修改原來的數組;
var _foreackO = function(){
const arr = [,,,,];
var res = arr.forEach(function (item,index,input) {
input[index] = item*;
});
console.log(res);//undefined
return arr;
}
console.log(_foreackO());//10, 20, 30, 40, 50
map: map的回調函數中支援return傳回值;return的是啥,相當于把數組中的這一項變為啥(并不影響原來的數組,隻是相當于把原數組克隆一份,把克隆的這一份的數組中的對應項改變了);
var _mapO = function(){
const arr = [,,,,];
var res = arr.map(function (item,index,input) {
return item*;
});
console.log(res);//10,20,30,40,50
return arr;
}
console.log(_mapO());//1,2,3,4,5
7、 filter
該filter()方法建立一個新的比對過濾條件的數組
var _filter = function(){
const arr = [,,,,];
let res = arr.filter(function(item){
return item === ;
})
console.log(res);//1
return arr;
}
console.log(_filter());//1,2,3,4,5
8、 reduce()
reduce()可以實作一個累加器的功能,将數組的每個值(從左到右)将其降低到一個值。 說實話剛開始了解這句話有點難度,它太抽象了。
var _reduce1 = function(){
const arr = [,,,,,];
return arr.reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
return prev + " " +next;
});
}
var _reduce2 = function(){
const arr = [,,,,,,,];
return arr.reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
prev[next] = (prev[next]+) || ;
return prev;
},{});
}
console.log(_reduce1());//1 2 3 4 5 5
console.log(_reduce2());//{1: 2, 2: 2, 3: 1, 4: 1, 5: 2}