var arr = [
{id:1, username:"EZ", linkman:"张三" },
{id:2, username:"EZ", linkman:"张三" },
{id:3, username:"EZ", linkman:"张三" },
{id:4, username:"鳄鱼", linkman:"王五" },
{id:5, username:"EZ", linkman:"李四" },
{id:6, username:"盖伦", linkman:"张三" },
{id:7, username:"瑞文", linkman:"张三" },
{id:8, username:"小鱼人", linkman:"王五" },
{id:9, username:"小鱼人", linkman:"王五" }
];
//将上面的arr 先根据username 去重,保留后面的数据
//去重后的数据应该为
var newarr = [
{id:4, username:"鳄鱼", linkman:"王五" },
{id:5, username:"EZ", linkman:"李四" },
{id:6, username:"盖伦", linkman:"张三" },
{id:7, username:"瑞文", linkman:"张三" },
{id:9, username:"小鱼人", linkman:"王五" }
];
//最后统计 linkman 出现的次数
var result = [
{linkman:"王五", time:"2"},
{linkman:"李四", time:"1"},
{linkman:"张三", time:"2"},
];
关于JSON数组的小Demo,有木有高手
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 这本质上不是 JSON 数组,而是 JS 的复杂对象,以 username 为 Key 通过一遍遍历完成统计,参考 demo 为:
function sumup(){ var arr = [ {id:1, username:"EZ", linkman:"张三" }, {id:2, username:"EZ", linkman:"张三" }, {id:3, username:"EZ", linkman:"张三" }, {id:4, username:"鳄鱼", linkman:"王五" }, {id:5, username:"EZ", linkman:"李四" }, {id:6, username:"盖伦", linkman:"张三" }, {id:7, username:"瑞文", linkman:"张三" }, {id:8, username:"小鱼人", linkman:"王五" }, {id:9, username:"小鱼人", linkman:"王五" } ]; var sumMap = {}; for(var i=0;i<arr.length;i++){ var temp = arr[i]; var username = temp.username; //新记录,加入 sumMap 中 if(sumMap[username] == undefined){ var anewData = {}; anewData.linkman = temp.linkman; anewData.time = 1; sumMap[username] = anewData; }else{ //非新记录,累加 var lastCount = sumMap[username].time; sumMap[username].time=lastCount+1; } //遍历打印sumMap console.log(sumMap); } }
js 的对象可以用做 Map ,以 username 为 map 的 key,存在就累加 time ,不存在就新添加新属性。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 求数学坐标画圆以及直线的算法
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站