每日 30 秒之 数组所有数据是否满足某条件

简介

判断一个数组中是否都满足特定的条件,如果满足则返回 true 否则返回 false

// 该源码来自于 https://30secondsofcode.org
const all = (arr, fn = Boolean) => arr.every(fn)

代码分析

  • Array.prototype.every(callback[, thisArg]) 这个函数在 ES2015 中正式被实现需要注意环境是否支持。
  • callback 被调用时传入三个参数:元素值,元素的索引,原数组。
  • every 方法为数组中的每个元素执行一次 callback 函数,直到它找到一个使 callback 返回 false(表示可转换为布尔值 false 的值)的元素。

有的同学会说了,这个 all 函数 和 直接使用 Array.prototype.every 有什么区别呢?答案就在fn = Boolean 这个点睛之笔,总所周知 javascript 中的对象其实是一种特殊的函数,利用 Boolean 这个对象可以非常方便对数据进行格式化为 boolean 并返回值。every 函数不能在没有 callback 时进行调用,这个函数更多的是拓展了 every

使用场景

一个简单的微商场景,获得当前用户的所有下级并判断是否所有人都超过 平台规定的最低销售额,如果满足则可以获得特定的奖金奖励。

const MIN_SALES = 100000 // 100000 分钱

// 抽取
const disciples = [
    { name: 'xiaoer', sales: 100000 },
    { name: 'xiaosi', sales: 50000 },
    { name: 'menty', sales: 150000 },
]

const canAward = all(disciples, (item, index, origin) => {
    return item.sales > MIN_SALES
})

相似代码

判断一个数组中是否有一个满足的数据,如果满足则返回 true 否则返回 false

// 该源码来自于 https://30secondsofcode.org
const any = (arr, fn = Boolean) => arr.some(fn)

判断一个数组中所有数据是否相等。

// 该源码来自于 https://30secondsofcode.org
const allEqual = arr => arr.every(val => val === arr[0])

打赏&联系

如果您感觉有收获,欢迎给我打赏,以激励我输出更多的优质内容。

打赏&联系

本文原稿来自 PushMeTop
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值