浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
1.map
有返回值,返回一个新的数组,每个元素为调用func的结果。
letlist=[1,2,3,4,5];
letother=list.map((d,i)=>{
returnd*2;
});
console.log(other);
//print:[2,4,6,8,10]
2.filter
有返回值,返回一个符合func条件的元素数组
letlist=[1,2,3,4,5];
letother=list.filter((d,i)=>{
returnd%2;
});
console.log(other);
//print:[1,3,5]
3.some
返回一个boolean,判断是否有元素符合func条件,如果有一个元素符合func条件,则循环会终止。
letlist=[1,2,3,4,5];
list.some((d,i)=>{
console.log(d,i);
returnd>3;
});
//print:1,02,13,24,3
//returnfalse
4.every
返回一个boolean,判断每个元素是否符合func条件,有一个元素不满足func条件,则循环终止,返回false。
letlist=[1,2,3,4,5];
list.every((d,i)=>{
console.log(d,i);
returnd<3;
});
//print:1,02,13,2
//returnfalse
5.forEach
没有返回值,只针对每个元素调用func。
优点:代码简介。
缺点:无法使用break,return等终止循环。
letlist=[1,2,3,4,5];
letother=[];
list.forEach((d,i)=>{
other.push(d*2);
});
console.log(other);
//print:[2,4,6,8,10]
6.forin
for-in循环实际是为循环”enumerable“对象而设计的,forin也可以循环数组,但是不推荐这样使用,for–in是用来循环带有字符串key的对象的方法。
缺点:只能获得对象的键名,不能直接获取键值。
varobj={a:1,b:2,c:3};
for(varpropinobj){
console.log("obj."+prop+"="+obj[prop]);
}
//print:"obj.a=1""obj.b=2""obj.c=3"
7.forof
forof为ES6提供,具有iterator接口,就可以用forof循环遍历它的成员。也就是说,forof循环内部调用的是数据结构的Symbol.iterator方法。
forof循环可以使用的范围包括数组、Set和Map结构、某些类似数组的对象(比如arguments对象、DOMNodeList对象)、后文的Generator对象,以及字符串。
有些数据结构是在现有数据结构的基础上,计算生成的。比如,ES6的数组、Set、Map都部署了以下三个方法,调用后都返回遍历器对象。
entries
entries()返回一个遍历器对象,用来遍历[键名,键值]组成的数组。对于数组,键名就是索引值;对于Set,键名与键值相同。Map结构的iterator接口,默认就是调用entries方法。
keys
keys()返回一个遍历器对象,用来遍历所有的键名。
values
values()返回一个遍历器对象,用来遍历所有的键值。
这三个方法调用后生成的遍历器对象,所遍历的都是计算生成的数据结构。
//字符串
letstr="hello";
for(letsofstr){
console.log(s);//hello
}
//遍历数组
letlist=[1,2,3,4,5];
for(leteoflist){
console.log(e);
}
//print:12345
//遍历对象
obj={a:1,b:2,c:3};
for(letkeyofObject.keys(obj)){
console.log(key,obj[key]);
}
//print:a1b2c3
说明:对于普通的对象,for...in循环可以遍历键名,for...of循环会报错。
一种解决方法是,使用Object.keys方法将对象的键名生成一个数组,然后遍历这个数组。
//entries
letarr=['a','b','c'];
for(letpairofarr.entries()){
console.log(pair);
}
//[0,'a']
//[1,'b']
//[2,'c']
以上所述是小编给大家介绍的浅析JS中的map,filter,some,every,forEach,forin,forof用法总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!