当前位置: 首页 > news >正文

JavaScript数组分组

数组分组: 

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

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 vreturn 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 >= 60console.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 >= 60console.log(group(result, fn), 
);

http://www.lryc.cn/news/178004.html

相关文章:

  • IEEE PDF eXpress系统报错:TimesNewRoman PS-BoldMT, ItalicMT, PSM
  • 【MATLAB源码-第40期】基于matlab的D*(Dstar)算法栅格路径规划仿真。
  • Pikachu-xxe (xml外部实体注入漏洞)过关笔记
  • Unity实现设计模式——责任链模式
  • Java中String转换为double类型
  • 不同埋深地下管线的地质雷达响应特征分析
  • 重新认识mysql
  • 系统集成|第十九章(笔记)
  • 【Linux】Linux远程访问Windows下的MySQL数据库
  • android安卓core tombstone .pb
  • C++简单实现红黑树
  • 国庆加速度!新增功能点锁定功能,敏捷开发新增估算功能,助力项目快速突破!
  • uniapp 如何动态切换应用图标、名称
  • CUDA学习笔记0929
  • XML-Based Configuration Beans for Ioc Container
  • 俞敏洪:董宇辉在北京有房子了!
  • 蓝桥等考Python组别七级006
  • 港联证券:股市3000点什么意思?
  • windows 下 vs code 格式化代码(clang-format)
  • USB TypeC接口说明
  • 深眸科技入局AI视觉行业,以深度学习赋能视觉应用推进智造升级
  • 基于微信小程序的校园失物招领系统设计与实现(源码+lw+部署文档+讲解等)
  • 蓝桥等考Python组别七级001
  • 【软件测试】开发/测试模型
  • 用于时间触发的嵌入式软件的IDE
  • wordpress插件-免费的wordpress全套插件
  • 第一百五十七回 SliverList组件
  • 数据结构与算法——17.二叉搜索树
  • rust所有权
  • Win10电脑任务栏没有蓝牙图标的简单解决方法