每日 30 秒之 取出对象数组中唯一的数据集

简介

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

// 该源码来自于 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))

打赏&联系

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

打赏&联系

本文原稿来自 PushMeTop

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,895评论 2 17
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,217评论 6 13
  • -1- 拾荒 年初,婆婆突然宣布,以后家里的废纸、纸箱、水瓶之类一律不要再丢到外面去,她要收集起来卖。她的理由是...
    爱在文字间阅读 386评论 0 0
  • 寒夜凄迷,白雪苍茫所谓佳偶,在窗一方 莫忘初心,但望终极休问因果,且闻菩提 朔风凛冽,冰凌悬滴所谓佳偶,倚窗而立 ...
    后来居士阅读 165评论 1 1