【前端】数组元素过滤

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011240016/article/details/84188057

先定义一个数组:

const ages = [23, 26, 25, 22, 25, 22, 23, 22, 15];

最普通的遍历输出:

// forEach
companies.forEach(function(company) {
	console.log(company.name);
});

下面正式来看过滤的方式.

第一种,这是遍历时将满足条件的元素抽出来,平平无奇。

// filter
let canDrink = [];
 for(let i = 0; i < ages.length; i++) {
 	if(ages[i] >= 21) {
 	 canDrink.push(ages[i]);
 	}
}

第二种,通过xxArray.filter的形式:

const canDrink = ages.filter(function(age) {
	if(age >= 21) {
		return true;
	}
});

第三种,通过=>箭头函数的形式,即lambda表达式。

const canDrink = ages.filter(age => age >= 21);
console.log(canDrink)

实现的效果相同,但是代码简洁度有很大不同,如果函数的参数不止一个,用括号括起来即可。(age, name) => ...

过滤条件不止一个时:

const companies = [
	{ name: "Company One", category: "Finance", start: 1981, end: 2003 }, 
	{ name: "Company Two", category: "Retail", start: 1991, end: 2016 }, 
	{ name: "Company Three", category: "Auto", start: 1983, end: 2007 }, 
	{ name: "Company Four", category: "Retail", start: 1987, end: 2009 }, 
	{ name: "Company Five", category: "Tech", start: 1985, end: 2010 }, 
	{ name: "Company Six", category: "Finance", start: 1988, end: 2000 }, 
	{ name: "Company Seven", category: "Auto", start: 1986, end: 2012 }, 
	{ name: "Company Eight", category: "Retail", start: 1984, end: 2005 }, 
	{ name: "Company Nine", category: "Finance", start: 1998, end: 2013 }, 
];

const retailCompanies = companies.filter(company => company.category === "Retail" && company.start > 1990);
console.log(retailCompanies);

END.

猜你喜欢

转载自blog.csdn.net/u011240016/article/details/84188057
今日推荐