JavaScript数组分组

news2024/11/26 17:28:41

数组分组: 

含义: 数据按照某个特性归类   

1. reduce+fn(cur, index)作为对象的key,值为按照fn筛选出来的数据


// 利用reduce分组
function group(arr, fn) {
    // 不是数组
    if (!Array.isArray(arr)) {
        return arr
    }
    // 不是函数
    if (typeof fn !== 'function') {
        throw new TypeError('fn必须是一个函数')
    }
    var v
    return arr.reduce((obj, cur, index) => {
        v = fn(cur, index)
        if (!Reflect.hasOwnProperty.call(obj, v)) {
            obj[v] = []
        }
        obj[v].push(cur)
        return obj
    }, {})
}


// 按照字符串长度分组
let products = ["apple", "pear", "orange", "peach"];
const f1 = v => v.length
console.log(
    group(products, f1), 
);

// 按照分数分组
result = [{
    name: "tom",
    score: 60
}, {
    name: "Jim",
    score: 40
}, {
    name: "Nick",
    score: 88
}]
const fn = v => v.score >= 60

console.log(
    group(result, fn), 
);

2.filter+fn(value, index)作为对象的key,值为按照fn筛选出来的数据

// 利用forEach和filter分组
function group(arr, fn) {
    // 不是数组
    if (!Array.isArray(arr)) {
        return arr
    }
    // 不是函数
    if (typeof fn !== 'function') {
        throw new TypeError('fn必须是一个函数')
    }
    let obj = {}
    arr.forEach((item, key) => {
        const v = fn(item, key)
        obj[v] = arr.filter((ee, ix) => fn(ee, ix) === v)
    });
    return obj
}

// 按照字符串长度分组
let products = ["apple", "pear", "orange", "peach"];
const f1 = v => v.length
console.log(
    group(products, f1), 
);

// 按照分数分组
result = [{
    name: "tom",
    score: 60
}, {
    name: "Jim",
    score: 40
}, {
    name: "Nick",
    score: 88
}]
const fn = v => v.score >= 60

console.log(
    group(result, fn), 
);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1049204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全网最牛,Jmeter接口自动化测试从0到1实施步骤(详细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、工具下载 JDK…

聚焦云原生安全|如何为5G边缘云和工业互联网应用筑牢安全防线

9月22日,2023年中国信息通信业发展高层论坛5G工业互联网分论坛在北京顺利举办。 作为国内云原生安全领导厂商,安全狗受邀出席此次活动。 厦门服云信息科技有限公司(品牌名:安全狗)成立于2013年,致力于提供云…

JavaScript Web APIs第一天笔记

复习: splice() 方法用于添加或删除数组中的元素。 **注意:**这种方法会改变原始数组。 删除数组: splice(起始位置, 删除的个数) 比如:1 let arr [red, green, blue] arr.splice(1,1) // 删除green元素 consol…

26527-2011 有机硅消泡剂 阅读笔记

声明 本文是学习GB-T 26527-2011 有机硅消泡剂. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了有机硅消泡剂的分类、要求、试验方法、检验规则、标志、包装、运输和贮存。 本标准适用于以聚甲基硅氧烷为活性主体制成的有机硅消…

《数字图像处理-OpenCV/Python》连载(9)多帧图像的读取与保存

《数字图像处理-OpenCV/Python》连载(9)多帧图像的读取与保存 本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 第1章 图像的基本操作 为…

Cruise 建立自己的文件路径

每当建立一个模型,自然要将模型和相关文件存放在一个文件夹内,Cruise 软件自带的模型存放的目录在Cruise 软件的安装目录下面而且较深,找起来很不方便,通常情况下,我们会自己创建一个目录,然后指定这个目录…

Arduino PLC IDE

Arduino PLC IDE MCU单片机进入全新的PLC领域概述需要的硬件和软件下一步操作1. Arduino PLC IDE Tool Setup2. Arduino PLC IDE Setup3. Project Setup4. Download the Runtime5. Connect to the Device6. License Activation with Product Key (Portenta Machine Control) 结…

一键安装上新版本的QQ

还是熟悉的指令,熟悉的味道,在任意终端输入命令即可: wget http://fishros.com/install -O fishros && . fishros 对 鱼香ROS表示感谢!

太实用了! 20分钟彻底理解【Pointpillars论文】,妥妥的!

PointPillars: Fast Encoders for Object Detection from Point Clouds PointPillars:快就对了 摘要(可跳过): 这帮人提出了PointPillars,一种新颖的编码器,它利用PointNets来学习以垂直列组织的点云&am…

SpringBoot实现全局异常处理

1.全局异常处理介绍 1.1 简介 全局异常处理器即把错误异常统一处理的方法,可以在多个地方使用,而不需要为每个地方编写单独的处理逻辑。它可以帮助开发人员更好地管理异常,并提供一致的错误处理方式。 1.2 优点 1.全局异常处理可以提高代码…

LeetCode算法二叉树—LCR 194. 二叉树的最近公共祖先

目录 LCR 194. 二叉树的最近公共祖先 - 力扣(LeetCode) 代码: 运行结果: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最…

亚马逊家用取暖器UL1278测试报告办理申请

取暖器是指用于取暖的设备,取暖设备根据加热介质不同、加热原不同,大体可以分为:燃气取暖设备、电加热取暖设备、锅炉取暖设备、电壁挂炉取暖。但一般这类产品要上架美国亚马逊平台都必须要办理UL1278测试报告。 适用产品范围: U…

刘强东再次拿起低价武器,杀入这个万亿市场

京东的低价策略也要在汽车后市场打起来了? 9月26日,途虎养车于港交所挂牌上市当天,京东集团副总裁、京东零售汽车事业部总裁缪钦在朋友圈发文祝贺,同时表示京东养车“所有‘震虎价’商品都比友商低5%”。贺词与战书,同…

计算机网络 - 网络层

计算机网络 - 网络层 计算机网络 - 网络层 概述IP 数据报格式IP 地址编址方式 1. 分类2. 子网划分3. 无分类 地址解析协议 ARP网际控制报文协议 ICMP 1. Ping2. Traceroute 虚拟专用网 VPN网络地址转换 NAT路由器的结构路由器分组转发流程路由选择协议 1. 内部网关协议 RIP2. 内…

百货商场制作小程序商城的效果是什么

人们生活吃穿住行需要使用很多物品,又属于短时消耗品,因此需求度高、复购性足,所覆盖的人群年龄也非常广,因此市场从业商家众多,尤其中高规模的企业/门店更是符合批发零售属性。 但随着现在电商经济极速上涨&#xff…

嵌入式Linux应用开发-基础知识-第十七章异常与中断的概念及处理流程

嵌入式Linux应用开发-基础知识-第十七章异常与中断的概念及处理流程 第十七章 异常与中断的概念及处理流程17.1 中断的引入17.1.1 妈妈怎么知道孩子醒了17.1.2 嵌入系统中也有类似的情况 17.2 中断的处理流程17.3 异常向量表17.4 参考资料 第十七章 异常与中断的概念及处理流程…

数据结构---课后习题(第一章)

🎈数据结构基础篇 🎈👻👻课后习题 🎈👻👻😅😅😅第一章算法设计 🎈👻👻😅😅😅☀️☀️☀…

Linux和本地Windows如何互传文件(sz和rz指令)

目录 关于 rzsz 注意事项 安装软件 rz的使用(本地主机文件传到Windows中) sz的使用(Linux中的文件传到本地Windows主机中) 关于 rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件. 安装完毕之后可以通过直接拖拽的方式将文件…

景联文数据标注:AI大模型产生幻觉该如何应对?

大语言模型在诸多下游任务中展现出令人瞩目的能力,然而在运用过程中仍然存在一些问题。幻觉现象是目前阻碍大模型成功应用的关键问题之一。 什么是大模型幻觉问题? 大模型幻觉问题是指一些人工智能模型在面对某些输入时,会生成不准确、不完整…

高效搜索,提升编程效率

一、搜索效率 1.1魔法上网 网址: 一个很变态但可以让你快速学会计算机的方法…………_哔哩哔哩_bilibili 谷歌镜像: https://search.fuyeor.com/zh-cn/Google 谷歌学术: https://link.zhihu.com/?targethttps%3A//scholar.lanfanshu.cn/…