js对象数组(JSON) 根据某个共同字段分组

希望的是将下面的对象数组:

[{"id":"1001","name":"值1","value":"111"},{"id":"1001","name":"值1","value":"11111"},{"id":"1002","name":"值2","value":"25462"},{"id":"1002","name":"值2","value":"23131"},{"id":"1002","name":"值2","value":"2315432"},{"id":"1003","name":"值3","value":"333333"}
]

根据相同id字段分组,转换成下面这种形式:

[{"id": "1001","name": "值1","data": [{"id": "1001", "name": "值1", "value": "111"},{ "id": "1001", "name": "值1", "value": "11111"}]},{"id": "1002","name": "值2","data": [{ "id": "1002",  "name": "值2", "value": "25462" },{ "id": "1002", "name": "值2", "value": "23131"},{"id": "1002", "name": "值2","value": "2315432" }]},{"id": "1003","name": "值3","data": [{"id": "1003", "name": "值3", "value": "333333" }]}
]

做法

var arr = [{"id":"1001","name":"值1","value":"111"},{"id":"1001","name":"值1","value":"11111"},{"id":"1002","name":"值2","value":"25462"},{"id":"1002","name":"值2","value":"23131"},{"id":"1002","name":"值2","value":"2315432"},{"id":"1003","name":"值3","value":"333333"}
];var map = {},dest = [];
for(var i = 0; i < arr.length; i++){var ai = arr[i];if(!map[ai.id]){dest.push({id: ai.id,name: ai.name,data: [ai]});map[ai.id] = ai;}else{for(var j = 0; j < dest.length; j++){var dj = dest[j];if(dj.id == ai.id){dj.data.push(ai);break;}}}
}console.log(dest);

转载地址

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

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

相关文章

用装饰器改变收藏

装饰图案 自从第一次学习编程设计模式以来&#xff0c;装饰器模式一直是我的最爱。 在我看来&#xff0c;这是一个很新颖的想法&#xff0c;比其他想法有趣得多。 不要误会我的意思&#xff0c;其他大多数人也引起了我的注意&#xff0c;但没有什么比装饰器模式更重要。 至今&a…

ASP.NET WebAPI 自定义ControllerSelector

呃..今天同事要实现客户端调用不同版本Controller的功能, 其实几句代码就搞定了.. 首先定义自己的ControllerSelector,代码如下: public class ShadowControllerSelector : IHttpControllerSelector{private readonly HttpConfiguration _configuration;public ShadowControlle…

MomentJS计算两个时间的差值diff方法

moment(endTime).diff(moment(startTime), years)moment(endTime).diff(moment(startTime), months)moment(endTime).diff(moment(startTime), days) // 开始时间和结束时间的时间差&#xff0c;以“天”为单位&#xff1b;endTime和startTime都是毫秒数moment(endTime).d…

JAX-RS 2.0:服务器端处理管道

这篇文章的灵感来自JAX-RS 2.0规范文档 &#xff08;附录C&#xff09;中的Processing Pipeline部分。 我喜欢它是因为它提供了JAX-RS中所有模块的漂亮快照-以准备好吞咽的胶囊形式&#xff01; 礼貌– JAX-RS 2.0规范文档 因此&#xff0c;我想到了使用此图简要概述不同的JA…

基于TCP/IP的文件服务器编程一例

来源&#xff0c;华清远见嵌入式学院实验手册&#xff0c;代码来源&#xff1a;华清远见曾宏安 实现的功能&#xff1a; 编写TCP文件服务器和客户端。客户端可以上传和下载文件 客户端支持功能如下&#xff1a; 1.支持一下命令 help 显示客户端所有命令和说明 list 显示服务器…

React 向children中传值,layouts

const newChild React.children.map(children,function(childItem){return React.cloneElement(childItem,{key:传递的数据}) })

Apache TomEE + JMS。 这从未如此简单。

我记得J2EE &#xff08;1.3和1.4&#xff09;的过去&#xff0c;使用JMS启动项目非常困难。 您需要安装JMS 代理 &#xff0c;创建主题或队列 &#xff0c;最后使用服务器配置文件和JNDI开始自己的战斗。 感谢JavaEE 6及其它&#xff0c;使用JMS确实非常简单。 但是使用Apach…

Struts2显示double价格格式0.00

在国际化资源文件中加入&#xff1a; format.money{0,number,0.00} jsp页面用struts标签&#xff1a; <s:text name"format.money">   <s:param name"value" value"priceName" /> </s:text> 输出格式&#xff1a;0.00转载于…

数组方法大全ES5+ES6

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录1. 使用 Array 构造函数2. 使用数组字面量表示法数组原型方法1. join()2.push()和pop()3.shift() 和 unshift()4.sort()5.reverse()6.concat()7.slice()8.splice()9.…

【Linux系统基础】(2)在Linux上部署MySQL、RabbitMQ、ElasticSearch、Zookeeper、Kafka、NoSQL等各类软件

实战章节&#xff1a;在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面&#xff0c;我们学习了许多的Linux命令和高级技巧&#xff0c;这些知识点比较零散&#xff0c;同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用&#xff0c;…

使用Java 8流进行快速失败的验证

我已经失去了使用类似方法通过失败快速验证代码状态的次数&#xff1a; public class PersonValidator {public boolean validate(Person person) {boolean valid person ! null;if (valid) valid person.givenName ! null;if (valid) valid person.familyName ! null;if (…

找到数组最大值

const maxHight Math.max.apply(null, rowData && rowData.urlImage.map(ele > ele.long) || []);

JDK 7和JDK 8中大行读取速度较慢的原因

我之前发布了博客文章“使用JDK 7和JDK 8读取慢速行”&#xff0c;并且在该问题上有一些有用的评论来描述该问题。 这篇文章提供了更多解释&#xff0c;说明为何该文章中演示的文件读取&#xff08;并由Ant的LineContainsRegExp使用 &#xff09;在Java 7和Java 8中比在Java 6中…

Spring Stateless State Security第3部分:JWT +社会认证

我的Stateless Spring Security系列文章的第三部分也是最后一部分是关于将基于JWT令牌的身份验证与spring-social-security混合在一起的。 这篇文章直接建立在此基础上&#xff0c;并且主要集中在已更改的部分上。 想法是使用基于OAuth 2的“使用Facebook登录”功能来替换基于用…

css React 单行省略和多行省略

单行省略 white-space: nowrap; text-overflow: ellipsis; overflow: hidden; word-break: break-all;多行省略 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;我们需要在需要超出加省略号的标签…

nyoj239 月老的难题 二分图 匈牙利算法

月老的难题 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述月老准备给n个女孩与n个男孩牵红线&#xff0c;成就一对对美好的姻缘。 现在&#xff0c;由于一些原因&#xff0c;部分男孩与女孩可能结成幸福的一家&#xff0c;部分可能不会结…

使用系统规则测试System.in和System.out

编写单元测试是软件开发的组成部分。 当您的被测类与操作系统交互时&#xff0c;您必须解决的一个问题是模拟其行为。 这可以通过使用模拟代替Java Runtime Environment&#xff08;JRE&#xff09;提供的实际对象来完成。 支持Java的模拟的库是例如嘲笑或jMock 。 当您完全控…

循环对象

params为对象&#xff0c;key为对象的k值 Object.keys(params).forEach(key > {formData.append(key, params[key]); });

[转]C#操作XML方法详解

本文转自&#xff1a;http://www.cnblogs.com/minotmin/archive/2012/10/14/2723482.html using System.Xml;//初始化一个xml实例XmlDocument xmlnew XmlDocument(); //导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml…

Web应用程序体系结构– Spring MVC – AngularJs堆栈

Spring MVC和AngularJs共同为构建表单密集型Web应用程序提供了一个真正高效且吸引人的前端开发堆栈。在这篇博客文章中&#xff0c;我们将看到如何使用这些技术构建表单密集型Web应用程序&#xff0c;并将这种方法与其他方法进行比较可用选项。 可以在此github 存储库中找到功能…