资讯专栏INFORMATION COLUMN

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

FullStackDeveloper / 1357人阅读

简介
数组、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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102372.html

相关文章

  • 每日 30 ⏱ 根据条件数组分成两个集合

    简介 数组、拆分 根据条件将数组分成两个集合。 // 该源码来自于 https://30secondsofcode.org const bifurcateBy = (arr, fn) => arr.reduce((acc, val, i) => (acc[fn(val, i) ? 0 : 1].push(val), acc), [[], []]) 代码分析 这个代码主要是利用了 Array.p...

    Dongjie_Liu 评论0 收藏0
  • 每日 30 ⏱ 谁敢与我一战

    showImg(https://segmentfault.com/img/remote/1460000018771037?w=900&h=500); 简介 benchmark、基准测试、jsPerf 在 优雅插入数组 一文中大家最多的评论就是 能不能加个基准测试。小二不是不喜欢加基准测试而是现在硬件设备的性能越来越快了,有时候一些操作不是性能问题的主要原因,当然这不是我们不写出好代码的理由。 书写...

    Dionysus_go 评论0 收藏0
  • 每日 30 ⏱ 对海量数据进行切割

    showImg(https://raw.githubusercontent.com/pushmetop/resource/master/30-seconds-for-everyday/chunk/poster.png); 简介 数据分割、分页、异步操作、DOM优化 把数组按指定大小进行分组,可以用于分页、数据切割、异步操作数据。 // 该源码来自于 https://30secondsofcode....

    ShevaKuilin 评论0 收藏0
  • MongoDB基础操作

    摘要:如果我们需要只去查询存在字段并且字段的值为的记录,需要配合操作。的对象和一些更新的操作符如等,也可以理解为查询内后面的可选,这个参数的意思是,如果不存在的记录,是否插入为插入,默认是,不插入。可选,抛出异常的级别。 更多内容欢迎来到博客 :https://imjianjian.github.io MongoDB版本:3.4 查询文档 find() 查询所有 db.collection...

    Nekron 评论0 收藏0
  • 每日 30 ⏱ 终极等于

    简介 字符串、数字、数组、对象、时间、类型、等于 科学家发现,人脑中会分泌多种能让人感到快乐、安全和成就感的物质,这些物质统称为快乐素。通常情况下,快乐素的释放水平很低,维持我们心情平静。只有当我们完成了预设目标,作为奖励,大脑才会增加快乐素的分泌,让人感受到满足和成功的喜悦。 这是之前看到的一篇关于 大脑奖励机制 文章的一段话,为了要获得奖励我们需要有预设目标,而是每日 30 秒系列也是为了帮助...

    lakeside 评论0 收藏0

发表评论

0条评论

FullStackDeveloper

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<