原数据:

        var arr = [
{name: '张三', age: 23, work: '计算机'},
{name: '王五', age: 29, work: '计算机'},
{name: '张兴', age: 30, work: '考古'},
{name: '刘豆豆', age: 23, work: '物理'},
{name: '李铁锤', age: 20, work: '英语'},
{name: '毛豆豆', age: 20, work: '英语'},
{name: '王五5', age: 23, work: '计算机'},
];

需求:

统计一共有几种学科,哪个学科人数 最多,并给其分类。

方法一:

        let maxCount = 0;
let allGroups = {}
const group = arr.reduce((prev, curr) => {
if (!prev[curr.work]) {
prev[curr.work] = 1;
allGroups[curr.work] = []
} else {
prev[curr.work] += 1;
}
allGroups[curr.work].push(curr);
maxCount = Math.max(maxCount, prev[curr.work]);
return prev;
}, {});
const groups = Object.keys(group);
console.log(allGroups)
console.log(`总共有${groups.length}科目;${groups.find((g) => group[g] === maxCount)}科目最多`);

结果:

方法二:

        const hashCout = {}
const newObj = arry.reduce((prev, curr) => {
if (curr && !prev[curr.work]) {
prev[curr.work] = [curr]
hashCout[curr.work] = 0
} else {
prev[curr.work].push(curr)
}
hashCout[curr.work]++
delete curr.work
return prev
}, {})
console.log(newObj)
console.log("科目数:" + Object.keys(newObj).length)
for (let i in hashCout){
if (hashCout[i]==(Math.max(...Object.values(hashCout)))){
console.log("人数最多的科目:" + i)
}
}

结果:

需求2:

如果只是光根据属性:work对其分类则代码如下

        const map = new Map()
arry.forEach(item => map.get(item.work) ? map.get(item.work).push(item) : map.set(item.work,[item]))
console.log(map)

结果:

js根据某属性对json数组分类的更多相关文章

  1. js中 给json对象添加属性和json数组添加元素

    js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...

  2. js处理ajax返回的json数组

    一.json对象和json数组的区别 jsonObject = {} # json对象 jsonArray=[{},{}] # json数组 二.数据处理 前台接收到后台传过来的json数组实际上是一 ...

  3. Js前端传递json数组至服务器端并解析的实现。

    最近做的一个小项目中需要将json数组数据传递到服务器端进行保存,现分享一下解决思路. 环境:EasyUi+Mvc 4.0 如下: 在上述截图中的红色圈起来的部分,需要在点击保存后通过一次ajax请求 ...

  4. js 获取json数组里面数组的长度

    作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋 ...

  5. js循环处理后台返回的json数组

    <script type="text/javascript"> function gongdan_search(elm){ var dangqian_value=$(e ...

  6. JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{&quot;options&quot;:&quot;[{

    JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...

  7. Js 中对 Json 数组的常用操作

    我们首先定义一个json数组对象如下: var persons = [ {name: "tina", age: 14}, {name: "timo", age: ...

  8. Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例

    server.js代码: // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http" ...

  9. JQUERY操作JSON数组添加新的属性和值

    语法: var data = {}; data["Order"] =order; data["Sort"] = sort; 但是需要注意的是,如果data后面还 ...

  10. 前端学习之——js解析json数组

    ** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...

随机推荐

  1. maven系列:简介和安装配置(Mac、Linux、Windows、settings.xml、IDEA配置)

    目录 一.简介 二.安装 三.配置 Mac配置 Centos配置 Window配置 settings.xml配置 IDEA配置 一.简介 官网:https://maven.apache.org mav ...

  2. Linux字符界面安装更新VMware Tools

    注:yeesn为我自己的用户名,实际操作中改用自己的用户名 1.切换到虚拟光驱目录 cd /media/yeesn/VMware Tools 2.复制压缩包到桌面 cp VMwareTools-xxx ...

  3. Python图片与Base64相互转换

    import base64 #必须的 pic=open("img.png","rb")#读取本地文件 pic_base=base64.b64encode(pic ...

  4. TIKZ全局样式设置

    tikz绘图引擎 TIKZ绘图引擎是基于tex实现,代码极其复杂,每次编写都要单独设置样式,甚是繁琐,如何能够全局设置呢? \begin{tikzpicture}[ auto, % 决策结点 deci ...

  5. 【项目源码】基于Spring + Spring MVC + MyBatis的图书馆管理系统

    基于Spring + Spring MVC + MyBatis的图书馆管理系统.主要功能包括:图书查询.图书管理.图书编辑.读者管理.图书的借阅与归还以及借还日志记录等​,非常适合学习研究. 运行配置 ...

  6. 记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析

    开心一刻 昨晚和一个朋友聊天 我:处对象吗,咱俩试试? 朋友:我有对象 我:我不信,有对象不公开? 朋友:不好公开,我当的小三 问题背景 程序在生产环境稳定的跑着 直到有一天,公司执行组件漏洞扫描,有 ...

  7. html页面底部添加版权信息

    话不多说,直接上代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  8. HIS系统部署的关键步骤与注意事项

    HIS系统部署的关键步骤与注意事项 引言:近年来,随着信息技术的快速发展,医疗行业也逐渐意识到数字化转型的重要性与必要性.医院信息系统(HIS)作为医疗信息化的核心,旨在提高医疗服务的质量与效率.在引 ...

  9. 【遥遥领先】Eolink IDEA 插件:零代码入侵,自动生成接口

    省流版: Eolink 有 IDEA 插件吗? 有,而且遥遥领先!我们在一年半之前就发布了,而且功能更丰富! IDEA 插件市场搜索"Eolink Apikit"即可安装使用. 使 ...

  10. 专为小白打造—Kafka一篇文章从入门到入土

    一.什么是Kafka MQ消息队列作为最常用的中间件之一,其主要特性有:解耦.异步.限流/削峰. Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦.冗余存储.流量削峰.缓冲.异步通信.扩 ...