针对数组的方法,他们拥有共同的第一个参数
——每执行一次的回调函数 (val,key,arr)=>{ }
forEach,代替普通for
let arr=[1,2,3,4,5];
arr.forEach((val,key,arr)=>{
console.log(val,key,arr)
})
打印出来的结果是:每一项的值,索引,数组本身
1 0 (5) [1, 2, 3, 4, 5]
2 1 (5) [1, 2, 3, 4, 5]
3 2 (5) [1, 2, 3, 4, 5]
4 3 (5) [1, 2, 3, 4, 5]
5 4 (5) [1, 2, 3, 4, 5]
本很没有返回值。
map()“映射”
就是原数组经过一定的处理被“映射”成对应新数组。
比如我们有一个函数f(x)=x的平方,
要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现,
map是array的原生方法,参数就是计算平方的函数
var arr=[4, 2, 5, 1, 3];
var newarr=arr.map(function (val) {
return val*val
})
这里可以使用箭头函数,简写
var newarr=arr.map( (val)=> { return val*val });或者更简单一点
var newarr=arr.map( (val)=> val*val )
console.log(newarr) //[16, 4, 25, 1, 9]
正常情况下,需要配合return,返回是一个新的数组。
filter()过滤
js里用来做过滤条件,vue里也可以使用,比如数组去重,过滤掉那些重复项,
过滤一些不合格“元素”, 如果回调函数返回true,就留下来
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((val, index,self)=>self.indexOf(val)===index)
console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]
第二个例子
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result =arr.filter(o=>o%2==0);
console.log(result); //2 4 6 8
以上是简写,实际是这样的
let arr = [1, 2, 3, 4, 5, 6, 7,8];
let newarr = arr.filter((val,key,arr)=>{
return val%2==0;
});
console.log(newarr); //[2, 4, 6, 8]
根据过滤条件返回一个新的数组
every(),some()返回的是布尔值
arr.some(): 类似查找, 数组里面某一个元素符合条件,返回true
arr.every(): 数组里面所有的元素都要符合条件,才返回true
var res=arr.some(item=>{ return item>0 })//true
var res=arr.every(item=>{ return item>0 })//false
var res=arr.every(item=>{ return item>=0 })//true
上面是简写,实际是这样的
let arr = [1, 2, 3, 4, 5, 6, 7,8];
let newarr = arr.some((val,key,arr)=>{
return val>2;
});
console.log(newarr);