some()
与every()
都是js中数组的迭代方法,结果都返回一个布尔值。
some()
:对数组中每一项运行给定函数,如果该函数对任一项返回true,则结果返回true。
every()
:对数组中每一项运行给定函数,如果该函数对每一项返回true,则结果返回true。
煮两个栗子帮忙大家消化一下:
1、你哪怕只抓住了一次机会,都不会活成我们村的树哥。
// 人生中的几次机遇
const life = [
{
opportunity: '金榜题名',
status: false
},
{
opportunity: '彩票中大奖',
status: false
},
{
opportunity: '贵人相助',
status: true
},
...
]
let success = life.some(v => v.status)
if (success) {
console.log('小伙子,有前途!')
}
// 执行结果:小伙子,有前途!
2、好迪真好,大家好才是真的好,广州好迪。
// 对好迪洗发水的使用评价
const test = [
{
name: '李玟',
say: '好'
},
{
name: '成龙',
say: '好'
},
{
name: 'C罗',
say: '好'
},
...
]
let good = test.every( v => v.say === '好')
if (good) {
console.log('大家用了都说好!')
}
// 执行结果:大家用了都说好!
最近《隐秘的角落》很火,看过的朋友应该秒懂下面的图吧,哈哈哈哈。
回来说正事,一个年级有若干个班,每个班有若干同学,通过将some()
和every()
组合使用,很容易实现以下逻辑:
1、some(every())
:全年级,只要有一个班能在数学考试中全员及格,数学老师就带大家去爬山。
let flag = classes.some(c => c.students.every(s => s.grade >= 60));
if (flag) {
console.log('数学老师带大家去爬山!');
}
2、some(some())
:全年级,只要有一位同学能在高考中考上清华,学校就会开表彰大会。
let flag = classes.some(c => c.students.some(s => s.university === '清华大学'));
if (flag) {
console.log('学校会开表彰大会!');
}
3、every(some())
:全年级,每个班只要有一位学生会打篮球,篮球赛就能如期举行。
let flag = classes.every(c => c.students.some(s => s.basketball === true));
if (flag) {
console.log('高三年级篮球赛可以如期举行!');
}
4、every(every())
:全年级,如果所有学生都不在教室,那一定是放假了。
let flag = classes.every(c => c.students.every(s => s.location !== '教室'));
if (flag) {
console.log('一定是放假了!');
}
5、只要有一个栗子让你“消化”本文知识了,你就……
let flag = city.some(c => c.people.some(p => p.understand === true));
if (flag) {
console.log('点个小心心呗~');
}
9+
0 条评论