js根据某属性对json数组分类
原数据:
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数组分类的更多相关文章
- js中 给json对象添加属性和json数组添加元素
js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...
- js处理ajax返回的json数组
一.json对象和json数组的区别 jsonObject = {} # json对象 jsonArray=[{},{}] # json数组 二.数据处理 前台接收到后台传过来的json数组实际上是一 ...
- Js前端传递json数组至服务器端并解析的实现。
最近做的一个小项目中需要将json数组数据传递到服务器端进行保存,现分享一下解决思路. 环境:EasyUi+Mvc 4.0 如下: 在上述截图中的红色圈起来的部分,需要在点击保存后通过一次ajax请求 ...
- js 获取json数组里面数组的长度
作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋 ...
- js循环处理后台返回的json数组
<script type="text/javascript"> function gongdan_search(elm){ var dangqian_value=$(e ...
- JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{
JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...
- Js 中对 Json 数组的常用操作
我们首先定义一个json数组对象如下: var persons = [ {name: "tina", age: 14}, {name: "timo", age: ...
- Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例
server.js代码: // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http" ...
- JQUERY操作JSON数组添加新的属性和值
语法: var data = {}; data["Order"] =order; data["Sort"] = sort; 但是需要注意的是,如果data后面还 ...
- 前端学习之——js解析json数组
** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...
随机推荐
- C#程序随系统启动例子 - 开源研究系列文章
今天讲讲C#中应用程序随系统启动的例子. 我们知道,应用程序随系统启动,都是直接在操作系统注册表中写入程序的启动参数,这样操作系统在启动的时候就根据启动参数来启动应用程序,而我们要做的就是将程序启动参 ...
- MIT6.s081/6.828 lectrue07:Page faults 以及 Lab5 心得
本篇博客主要是复习 MIT6.s081/6.828 lectrue07:Page faults 以及记录 Lab5 :COW fork 的心得 值得一提的是,2020 年之前的版本第 5 个 lab ...
- 当小白遇到FullGC
起初没有人在意这场GC,直到它影响到了每一天! 前言 本文记录了一次排查FullGC导致的TP99过高过程,介绍了一些排查时思路,线索以及工具的使用,希望能够帮助一些新手在排查问题没有很好的思路时,提 ...
- 三维模型OSGB格式轻量化重难点分析
三维模型OSGB格式轻量化重难点分析 在三维模型应用中,为了适应移动设备的硬件和网络限制等问题,OSGB格式轻量化处理已经成为一个重要的技术手段.但是,在实际应用中,OSGB格式轻量化仍然存在着一些重 ...
- vue3 甘特图(二):甘特图时间轴切换
vue3 甘特图(二):gantt时间轴切换 1.固定时间轴缩放级别 gantt.config.scale_unit = "month"; //时间轴单位 gantt.config ...
- VR国标
<软件基本要求与测试方法>
- Netease研发实习生一面
最想去的公司和部门..今天终于面了,感觉跪了..实质性的问题的确打得不好..庆幸的是拿到了B公司的offer,实习是不愁了.. 记下问题,希望对之后的同学有一定帮助. 问的问题总结: 1.进程线程协程 ...
- springboot3框架搭建
Spring Boot 3.0.0已经发布一段时间了,越来越多的公司考虑将技术框架升级到最新版本,JDK也相应要求JDK17以上.对应Spring Boot 2.x的版本,建议先升级到Spring B ...
- 使用极速全景图下载大师下载720yun全景图片(一键下载建E、720云全景原图)
VR全景图片下载 软件简介 极速全景图下载大师下载地址: 点击进入下载页面 极速全景图下载大师(VR全景图下载器)软件官网: 点击进入官网 极速全景图下载大师如何下载720yun全景图片 1.首先,在 ...
- 从MVC到DDD,该如何下手重构?
作者:付政委 博客:bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 大家好,我是技术UP主小傅哥.多年的 DDD 应用,使我开了技术的眼界! MVC 旧工程腐化严重,迭代成本太高 ...