【循环系列】filter和some循环

644 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

发现JS中的循环有好多,如果让一下说出来,感觉有些会想不起来,本次花时间来梳理一下JS中循环语句。

本系列相关文章:

  1. 【循环系列】for循环和while循环
  2. 【循环系列】for in和forEach循环
  3. 【循环系列】之map循环

本文是本系列第4篇,关于filtersome循环

filter

filter传参跟forEach也是一致,第一个参数是回调函数,第二个是this指向,回调函数的参数也是valueindexarray

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指向,回调函数的参数也是valueindexarray

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

实现成功

结束

以上就是filtersome循环的相关内容