gpt4 book ai didi

javascript - 对 JSON 集合重新排序

转载 作者:行者123 更新时间:2023-11-28 20:39:13 25 4
gpt4 key购买 nike

我从我的服务器获取了一个 JSON 数组,如下所示:

     [ {name: "Web Design", id: "27", month_n: "1", data: "68.00"},
{name: "Web Design", id: "27", month_n: "2", data: "56.00"} ,
{name: "Homework", id: "4", month_n: "2", data: "15.00"} ,
{name: "Gaming", id: "12", month_n: "2", data: "5.00"} ]

在客户端,我想重新排序以使其具有类似于:

 [{name: "Web Design", data:[68.00,56.00]}, {name:"Homework", data:[0,15]} and so on...

其中“data”值按“id”数字和月份数字分组(如果没有匹配的月份,则默认为 0)。

最好的方法是什么?我尝试了纯 JavaScript 方式,但我遇到了困难!我也听说用下划线JS更容易。但不知道从哪里开始。

有人可以启发我吗?

最佳答案

这可以通过两个操作来完成:

  1. 按 [name] 字段分组,然后
  2. 提取[数据]字段

有纯 JS 数组原型(prototype)扩展库可以用几行代码来实现此操作和许多其他操作。你可以看一下 underscore.js。我还写了一个简单的JS库jsList 。它带有许多单元测试作为示例。

你只需要写这几行:

var arr = [ {name: "Web Design", id: "27", month_n: "1", data: "68.00"},
{name: "Web Design", id: "27", month_n: "2", data: "56.00"} ,
{name: "Homework", id: "4", month_n: "2", data: "15.00"} ,
{name: "Gaming", id: "12", month_n: "2", data: "5.00"} ];

var temp = arr.groupBy(function(item){ return item.name });

var result = [];
for(var key in temp){
result.push({name: key, data: temp[key].pluck('data')});
}

您可以使用 Object.keys 来避免 for 循环,但它仅随 Javascript 1.8.5 或更高版本提供。

谢谢。

关于javascript - 对 JSON 集合重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com