这几天做的微信公众号项目中,出现了需要将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数组的更多相关文章

  1. JSon_零基础_006_将JSon格式的字符串转换为Java对象

    需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...

  2. arguments.callee 调用函数自身用法----JSON.parse()和JSON.stringify()前端js数据转换json格式

    arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函 ...

  3. python 使用eval() 可以将json格式的数据,转换为原始数据

    使用python 自带的函数可以将json 格式的数据(也就是字符串)转换为原始格式的数据, 当使用json.loads()无法将json格式的数据转换为原始数据(存在多层各种格式类型数据的嵌套), ...

  4. 如何利用fastjson将JSON格式的字符串转换为Map,再返回至前端成为js对象

    //注意,这里的jsonStr是json格式的字符串,里面如果遇到双引号嵌套双引号的,一般是嵌套的双引号经过转义 //    \",假如有这样的一个场景,这些字符串里面有需要的css样式的j ...

  5. js 如何把JSON格式的字符串转换为JSON对象

    直接用eval函数.例:var str1 = '{ "url": "www.51qdq.com", "name": "js&quo ...

  6. js中JSON格式数据的转化

    JSON.parse(STRING) => OBJECT JSON.stringify(OBJECT) => STRING

  7. js传递json格式对象到服务器

    var message = new Object();message.event = "test";message.params = new Object();message.pa ...

  8. Json格式的字符串转换为正常显示的日期格式

    //返回自定义格式日期: 2015-07-17 13:53:37function ChangeDateFormat(jsondate) { jsondate = jsondate.replace(&q ...

  9. 8. js中json格式解析

    var doc = O_PARAMETER.FJSonStr;(doc为:{"items":[],"nextId":0}) //1.先转为json对象,主要有以 ...

随机推荐

  1. conda 管理 python 版本

    conda常用命令 查看当前系统下的环境 conda info -e 创建新的环境 # 指定python版本为2.7 conda create -n env_name python=2.7 # 同时安 ...

  2. 滚动侦测scrollspy

    <!doctype html><html> <head><meta charset="utf-8"><meta http-eq ...

  3. (转)JSON Web Token - 在Web应用间安全地传递信息

    JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 让我们来假想一下一个场景.在A用户关注了B用户的时候,系统发邮件给B用户, ...

  4. PAT 1100 Mars Numbers[难]

    1100 Mars Numbers (20 分) People on Mars count their numbers with base 13: Zero on Earth is called &q ...

  5. mysql删除匿名用户

    首先使用命令进入数据库 [root@localhost raul]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Co ...

  6. 菜单条 Menu Bar Action

    //.h /***Action**/ QAction * act_openImage; QAction * act_openVideo; QAction * act_openAudio; /***Me ...

  7. NiFi REST API 的使用

    一.概述 为方便用户使用 NiFi 进行二次开发,NiFi 为开发者提供了 NIFI REST API. 关于 API 的详细介绍,请参见官网 NIFI REST API.这里仅给出一些注意的小细节. ...

  8. Action<>和Func<> 区别

    其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: public delegate void myDeleg ...

  9. Wannafly挑战赛28 Solution

    A:msc和mas Solved. 考虑斐波那契数列,即最多加45次即会超过1e9,直接暴力即可 #include <bits/stdc++.h> using namespace std; ...

  10. CCPC 2016-2017, Finals Solution

    A - The Third Cup is Free 水. #include<bits/stdc++.h> using namespace std; ; int n; int arr[max ...