资讯专栏INFORMATION COLUMN

每日 30 秒 ⏱ 唯一数据集

gityuan / 982人阅读

简介
数组、对象、唯一、只出现一次、差集

取出两个对象数组中唯一的数据集,即差集。

// 该源码来自于 https://30secondsofcode.org
const filterNonUniqueBy = (arr, fn) =>
  arr.filter((v, i) => arr.every((x, j) => (i === j) === fn(v, x, i, j)));
代码分析

代码使用了 Array.prototype.filter 来进行遍历数组并获取过滤,通过 Array.prototype.everyfn 来对数据项进行判断是否重复出现过。

使用场景

从后端或者数据库分别获取到参加不同马拉松的用户并对这些用户做归集,通过 filterNonUniqueBy 来寻找只参加过一次马拉松的用户。

// 查询到参加 2019厦门马拉松的数据
const join2019 = [
    { id: 1, name: "xiaoer", join: ["2019厦门马拉松", "2018厦门马拉松"] },
    { id: 2, name: "xiaosi", join: ["2019厦门马拉松"] },
]

// 查询到参加 2018年马拉松的数据
const join2018 = [
    { id: 1, name: "xiaoer", join: ["2019厦门马拉松", "2018厦门马拉松"] },
    { id: 3, name: "menty", join: ["2018厦门马拉松"] },
]

// 合并数据
const users = [...join2019, ...join2018]

// 获取只参加过一次的用户
// 输出:
// [
//    {id: 2, name: "xiaosi", sales: 50000},
//    {id: 3, name: "menty", sales: 150000}
// ]
const joinOnce = filterNonUniqueBy(users, (a, b) => a.id === b.id)
相似代码

取出数组中唯一的数据集。

// 该源码来自于 https://30secondsofcode.org
const filterNonUnique = arr => arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i))
一起成长
在困惑的城市里总少不了并肩同行的 伙伴 让我们一起成长。

如果您想让更多人看到文章可以点个 点赞

如果您想激励小二可以到 Github 给个 小星星

如果您想与小二更多交流添加微信 m353839115

本文原稿来自 PushMeTop

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

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

相关文章

  • 每日 30 ⏱ 判断是否为页面底部

    showImg(https://segmentfault.com/img/remote/1460000018771130?w=900&h=500); 简介 分页、优化、可视区域、无限加载 写前端页面时最经常遇到的开发需求之一就是 渲染后端数据返回的数据对象,当数据对象数量极多的时候便需要进行分页。 常见的分页方式有三种: 在页面底部生成 上一页、下一页、页面列表 按钮。 用户可以很直接的选择...

    callmewhy 评论0 收藏0
  • 每日 30 ⏱ JSON对象数组转换 CSV 表格数据

    简介 数组、对象、CSV、表格、工具 我们在 每日 30 秒之 arrayToCSV 中一起学习了将数组数据转化为 csv 表格数据并导出,那如果是对象数组怎么办呢?小脑袋瓜转得快的同学肯定会说:使用 Array.prototype.map 把需要导出的字段先遍历取出,再使用 arrayToCSV 将其导出为 CSV 数据表格。 可是你有没有想过如果一个对象数组数据非常之大时,使用 Array.p...

    Ajian 评论0 收藏0
  • 每日 30 ⏱ 数组所有数据是否满足某条件

    showImg(https://segmentfault.com/img/remote/1460000018770987?w=900&h=500); 简介 数组、every、any 判断一个数组中是否都满足特定的条件,如果满足则返回 true 否则返回 false。 // 该源码来自于 https://30secondsofcode.org const all = (arr, fn = Boole...

    FullStackDeveloper 评论0 收藏0
  • 每日 30 ⏱ 巧用可视区域

    简介 可视区域、页面优化、DOM节点多、图片懒加载、性能 可视区域是一个前端优化经常出现的名词,不管是显示器、手机、平板它们的可视区域范围都是有限。在这个 有限可视区域 区域里做到完美显示和响应,而在这个区域外少做一些操作来减少渲染的压力、网络请求压力。在 每日 30 秒之 对海量数据进行切割 中的使用场景,我们就是利用了 有限可视区域 只渲染一部分 DOM 节点来减少页面卡顿。 既然 可视区域 ...

    DevYK 评论0 收藏0
  • 每日 30 ⏱ CSV 表格数据转换 JSON 对象

    简介 数组、CSV、表格、工具 showImg(https://segmentfault.com/img/bVbp3L5?w=900&h=500); 我们之前的两期 数组转 CSV 表格数据 和 JSON 对象数组转换 CSV 表格数据 中学习了转化为 CSV 表格数据的代码片段,今天就讲讲 如何把 CSV 表格数据转换为 JSON 对象: // 该源码来自于 https://30secondso...

    livem 评论0 收藏0

发表评论

0条评论

gityuan

|高级讲师

TA的文章

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