参考地址: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 = [1,2,3,4,5];
return arr.indexOf(9)!=-1?true:false;
}
console.log(_indexOf());//false
2、lastindexOf
lastIndexOf() 方法返回在该数组中最后一个找到的元素位置,和 indexof相反。
3、every()
every()可是检测数组中的每一项是否符合条件
var _every = function(){
const arr = [1,2,3,4,5,-1];
const result = arr.every(function(item,index){
return item>0;
});
return result;
}
console.log(_every());//false
4、some()
some()可以检测数组中是否有某一项符合条件
var _some = function(){
const arr = [1,2,3,4,5];
const result = arr.some(function(item,index){
return item >4;
})
return result;
}
console.log(_some());//true
5、 forEach()
forEach为每个元素执行对应的方法
var _foreach = function(){
const arr = [1,2,3,4,5]
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 = [1,2,3,4,5];
var res = arr.forEach(function (item,index,input) {
input[index] = item*10;
});
console.log(res);//undefined
return arr;
}
console.log(_foreackO());//10, 20, 30, 40, 50
map: map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);
var _mapO = function(){
const arr = [1,2,3,4,5];
var res = arr.map(function (item,index,input) {
return item*10;
});
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 = [1,2,3,4,5];
let res = arr.filter(function(item){
return item === 1;
})
console.log(res);//1
return arr;
}
console.log(_filter());//1,2,3,4,5
8、 reduce()
reduce()可以实现一个累加器的功能,将数组的每个值(从左到右)将其降低到一个值。 说实话刚开始理解这句话有点难度,它太抽象了。
var _reduce1 = function(){
const arr = [1,2,3,4,5,5];
return arr.reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
return prev + " " +next;
});
}
var _reduce2 = function(){
const arr = [1,2,3,4,5,5,1,2];
return arr.reduce(function(prev,next){
console.log("prev:",prev);
console.log("next:",next);
prev[next] = (prev[next]+1) || 1;
return prev;
},{});
}
console.log(_reduce1());//1 2 3 4 5 5
console.log(_reduce2());//{1: 2, 2: 2, 3: 1, 4: 1, 5: 2}