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+
分类: js
浏览:1,425

0 条评论

发表评论

电子邮件地址不会被公开。

你必须允许浏览器启用JavaScript才能看到验证码

Scroll Up