js有五个迭代方法,分别为:every、some、filter、map、forEach
JavaScript权威指南有下面一段:
每个方法都接收两个参数:在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值。
传入这些方法中的函数会接收3个参数:数组项的值、该项在数组的位置、数组对象本身。
关于:运行该函数的作用域对象,我们来看一个列子
test() {
let person= {
name: "陈怂怂",
times: [1, 2, 3],
print: function() {
this.times.forEach(function(res) {
console.log(this.name);
}, this);
}
};
person.print();
}
迭代函数内部的function默认指向windows 第二个参数调整了this指向。如果没有用this改变指向,程序会报错。
1.every
var arr = [0,1,2,3,4];
var everyResult = arr.every((item, index) => {
return item > 2;
});
console.log(everyResult); //false
对数组每一项运行指定的函数(item>2),该函数对每一项都返回true,则返回true。
2.some
var arr = [0,1,2,3,4];
var someResult = arr.some((item, index) => {
return item > 2;
});
console.log(someResult); //true
对数组每一项运行指定的函数(item>2),该函数任意一项返回true,则返回true。
3.filter
var arr = [0,1,2,3,4];
var filterResult = arr.filter((item, index) => {
return item > 2;
});
console.log(filterResult); //[3, 4]
对数组每一项运行指定的函数(item>2),筛选出满足条件的项,组成一个数组。
4.map()
var arr = [0,1,2,3,4];
var mapResult = arr.map((item, index) => {
return item * 2;
});
console.log(mapResult); //[0, 2, 4, 6, 8]
对数组每一项运行指定的函数(item*2),返回每次函数调用的结果,并组成一个新的数组。
举个例子: 有个数组里面包含很多对象,我想获取每个对象的id,这时候就用到map。
let test = [
{ id: "11", name: "chen" },
{ id: "22", name: "li" }
];
var mapResult = test.map(item => item.id);
console.log(mapResult); //["11", "22"]
5.forEach()
var forResult = arr.forEach( (item,index)=>{
//执行操作
})
对数组每一项运行指定的函数,没有返回值。