简介
数组、every、any
判断一个数组中是否都满足特定的条件,如果满足则返回 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])
一起成长
在困惑的城市里总少不了并肩同行的 伙伴
让我们一起成长。
- 如果您想让更多人看到文章可以点个
点赞
。 - 如果您想激励小二可以到 Github 给个
小星星
。 - 如果您想与小二更多交流添加微信
m353839115
。
本文原稿来自 PushMeTop
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。