js将json格式的list转换为按某个字段分组的map数组
这几天做的微信公众号项目中,出现了需要将list分组显示的需求,解决方法如下
var data = [{
"id": "32b80b76-a81e-4545-8065-1e7c57180801",
"userId": "qy-uid",
"qcCode": "140403123001",
"packageInfo": "秋雨包裹一",
"tjTime": "2017-12-21 10:38:31.0",
"pdTime": "2017-12-21 11:05:08.0",
"shTime": "2017-12-29 10:17:06.0",
"addUserId": "qy-uid",
"pdUserId": "qy-uid",
"shUserId": "qy-uid",
"pdState": "00",
"shState": "00",
"packageState": "00",
"deleteFlg": "00",
"uname": "秋雨",
"uphone": "18151449650"
}, {
"id": "9ee2e7f0-0f7a-44e2-b7cc-577d21eb1142",
"userId": "recorde-test-for-qy-do-not-delete",
"qcCode": "queen-qcCode003",
"packageInfo": "绿箭侠包裹三",
"tjTime": "2017-12-21 10:46:08.0",
"tijiaoTime": "2017-12-21 10:46:27.0",
"shTime": "2017-12-29 10:16:59.0",
"addUserId": "recorde-test-for-qy-do-not-delete",
"tjUserId": "recorde-test-for-qy-do-not-delete",
"shUserId": "qy-uid",
"tjState": "01",
"shState": "00",
"packageState": "00",
"deleteFlg": "00",
"uname": "奥利弗 ",
"uphone": "1666666666"
}, {
"id": "a35b31b6-b974-4ca6-a4b6-28db3dae9814",
"userId": "recorde-test-for-qy-do-not-delete",
"qcCode": "queen-qcCode002",
"packageInfo": "绿箭侠包裹二",
"tjTime": "2017-12-21 10:45:44.0",
"tijiaoTime": "2017-12-21 10:46:27.0",
"pdTime": "2017-12-21 11:05:26.0",
"shTime": "2017-12-29 10:17:02.0",
"addUserId": "recorde-test-for-qy-do-not-delete",
"tjUserId": "recorde-test-for-qy-do-not-delete",
"pdUserId": "qy-uid",
"shUserId": "qy-uid",
"tjState": "01",
"pdState": "00",
"shState": "00",
"packageState": "00",
"deleteFlg": "00",
"uname": "奥利弗 ",
"uphone": "1666666666"
}, {
"id": "d265b81f-4459-4986-bce7-8ef6f4ff3751",
"userId": "qy-uid",
"qcCode": "140403123002",
"packageInfo": "秋雨包裹二",
"tjTime": "2017-12-21 10:38:47.0",
"pdTime": "2017-12-21 11:05:13.0",
"addUserId": "qy-uid",
"pdUserId": "qy-uid",
"pdState": "00",
"packageState": "00",
"deleteFlg": "00",
"uname": "秋雨",
"uphone": "18151449650"
}, {
"id": "f32fc473-4e2c-4357-b0bb-6fb44eb9eb74",
"userId": "recorde-test-for-qy-do-not-delete",
"qcCode": "queen-qcCode001",
"packageInfo": "绿箭侠包裹一",
"tjTime": "2017-12-21 10:45:27.0",
"tijiaoTime": "2017-12-21 10:46:27.0",
"pdTime": "2017-12-21 11:05:20.0",
"addUserId": "recorde-test-for-qy-do-not-delete",
"tjUserId": "recorde-test-for-qy-do-not-delete",
"pdUserId": "qy-uid",
"tjState": "01",
"pdState": "00",
"packageState": "00",
"deleteFlg": "00",
"uname": "奥利弗 ",
"uphone": "1666666666"
}, {
"id": "f830543a-ae54-49ee-9646-b29e81c50d25",
"userId": "qy-uid",
"qcCode": "140403123003",
"packageInfo": "秋雨包裹三",
"tjTime": "2017-12-21 10:39:00.0",
"addUserId": "qy-uid",
"packageState": "00",
"deleteFlg": "00",
"uname": "秋雨",
"uphone": "18151449650"
}];
var map = {}, //临时记录根据某字段分组的临时键值对变量,用来记录是否已经存在该uname
dest = []; //最终输出数组
for(var i = 0; i < data.length; i++){ //遍历list数据
var ai = data[i]; //ai代表list中的某一项
if(!map[ai.uname]){ //临时键值对变量中不存在此键
dest.push({ //将此数据以json对象格式放到数组中{key1:value1,key2:value2},key1是分组的字段,key2是list中的某一条数据
uname: ai.uname,
data: [ai]
});
map[ai.uname] = ai; //将未加入map的key放入,这样下次map[ai.uname]就会返回true,map用处到此为止。
}else{ //临时键值对中有此键
for(var j = 0; j < dest.length; j++){ //遍历list
var dj = dest[j]; //结果数组中某一项数据
if(dj.uname == ai.uname){ //结果数据中此dest[key1]的值和该list[i].uname的值相等时
dj.data.push(ai); //把list[i]也放入该dest[key1].data中去
break;
}
}
}
}
console.info(dest);
js将json格式的list转换为按某个字段分组的map数组的更多相关文章
- JSon_零基础_006_将JSon格式的字符串转换为Java对象
需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...
- arguments.callee 调用函数自身用法----JSON.parse()和JSON.stringify()前端js数据转换json格式
arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函 ...
- python 使用eval() 可以将json格式的数据,转换为原始数据
使用python 自带的函数可以将json 格式的数据(也就是字符串)转换为原始格式的数据, 当使用json.loads()无法将json格式的数据转换为原始数据(存在多层各种格式类型数据的嵌套), ...
- 如何利用fastjson将JSON格式的字符串转换为Map,再返回至前端成为js对象
//注意,这里的jsonStr是json格式的字符串,里面如果遇到双引号嵌套双引号的,一般是嵌套的双引号经过转义 // \",假如有这样的一个场景,这些字符串里面有需要的css样式的j ...
- js 如何把JSON格式的字符串转换为JSON对象
直接用eval函数.例:var str1 = '{ "url": "www.51qdq.com", "name": "js&quo ...
- js中JSON格式数据的转化
JSON.parse(STRING) => OBJECT JSON.stringify(OBJECT) => STRING
- js传递json格式对象到服务器
var message = new Object();message.event = "test";message.params = new Object();message.pa ...
- Json格式的字符串转换为正常显示的日期格式
//返回自定义格式日期: 2015-07-17 13:53:37function ChangeDateFormat(jsondate) { jsondate = jsondate.replace(&q ...
- 8. js中json格式解析
var doc = O_PARAMETER.FJSonStr;(doc为:{"items":[],"nextId":0}) //1.先转为json对象,主要有以 ...
随机推荐
- 170526、spring 执行定时任务
Spring 定时任务之 @Scheduled cron表达式 一.使用 Spring配置文件xmlns加入 xmlns:task="http://www.springframework.o ...
- Oracle下Insert的介绍
Insert是插入语句 insert into table(colname1,colname2) values(value1,valu2) 插入无效的会提示失败 数值类型在插入的时候不需要加引号,但是 ...
- ubuntu16.04下安装opencv-nonfree
在写计算机视觉与导航技术的课程作业,是关于sift和surf特征的提取及匹配.因为opencv中都有直接的函数可以调用. 关于SIFT和SURF的特征在opencv的nonfree模块中,从字面意思就 ...
- 朴素贝叶斯算法的python实现 -- 机器学习实战
import numpy as np import re #词表到向量的转换函数 def loadDataSet(): postingList = [['my', 'dog', 'has', 'fle ...
- Python的Flask框架应用调用Redis队列数据的方法
转自:http://www.jb51.net/article/86021.htm 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器, ...
- Mirror--镜像用户同步
--=========================================--在镜像搭建后,在主库服务器上创建登录,并在数据库上建立对应用户,--数据库中用户被同步到镜像数据库中,但登录是 ...
- controller中两个方法之间共享一个变量LinkedHashMap
1:引用传递,创建一个变量,给两个线程都传递进去. 2:静态修饰 static 通过该修饰符说明,该变量只有一份, 所有线程共用一份. 例如下面的htmlidMap通过static变量修饰, up ...
- 解决maven的依赖总是无法下载完成
有时候在eclipse里面刚刚导进一个maven项目,但是总是无法完整下载pom文件里面的依赖 主要有两个原因: 1,需要下载的依赖(jar包)需要开发人员给权限(远程仓库的下载权限),这个可以找开发 ...
- SLG手游Java服务器的设计与开发——数据管理
文章版权归腾讯GAD所有,禁止匿名转载:禁止商业使用:禁止个人使用. 一.前言 上文介绍了我们的SLG手游的服务器架构设计以及网络通信部分,本文介绍数据管理部分,在数据存储方面,我选择了Mysql.M ...
- Linq Query常见错误
1.只能对 Type.IsGenericParameter 为 True 的类型调用方法 对于此错误,一般常见在虚拟实体,但是要把条件拼接在Expression中,通常是因为该字段在数据库中是可空的, ...