小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
发现JS中的循环有好多,如果让一下说出来,感觉有些会想不起来,本次花时间来梳理一下JS中循环语句。
本系列相关文章:
本文是本系列第4篇,关于filter和some循环
filter
filter传参跟forEach也是一致,第一个参数是回调函数,第二个是this指向,回调函数的参数也是value、index、array。
filter是用于过滤一些不合格“元素”, 如果回调函数返回true,该元素就留下来
let arr = [1,2,3,4,5,6,7,8,9,10];
let res = arr.filter(function(val,index,array){
return val%2 == 0;
})
console.log(res)//[2,4,6,8,10]
下面来手动实现_filter:
Array.prototype._filter = function (fn, thisTo) {
let newArr = [];
let key = 0;
for (let i = 0; i < this.length; i++) {
if (fn.call(thisTo, this[i], i, this)) {
newArr[key] = this[i];
key++
}
}
return newArr;
}
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let res = arr._filter(function (val, index, array) {
return val % 2 == 0;
})
console.log(res)
实现成功
some
some传参跟forEach也是一致,第一个参数是回调函数,第二个是this指向,回调函数的参数也是value、index、array。
some用于表示查找,只要数组里面某个元素符合条件,结果就返回true,否则false
let arr = [1,2,3,4,"a"];
let res = arr.some(function(val,index,array){
return val === "a";
});
console.log(res);//true
手动封装也比较简单
Array.prototype._some = function (fn, thisTo) {
let res = false;
for (let i = 0; i < this.length; i++) {
if (fn.call(thisTo, this[i], i, this)) {
res = true;
break;
}
}
return res;
}
//test code
let arr = [1, 2, 3, 4, "b"];
let res = arr._some(function (val, index, array) {
return val === "a";
});
console.log(res); //false
实现成功
结束
以上就是filter和some循环的相关内容