Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中按属性对JSON数组排序?_Javascript_Json - Fatal编程技术网

在javascript中按属性对JSON数组排序?

在javascript中按属性对JSON数组排序?,javascript,json,Javascript,Json,所以 这是我的JSON数据的一个非常简化的版本: [ { "category": "Financial", "item": "DIAS" }, { "category": "Social", "item": "Andrew Barnett Explains..." }, { "category": "Financial", "item": "FP Sales" } ] 我想这样安排: [ { "categor

所以

这是我的JSON数据的一个非常简化的版本:

 [
  {
    "category": "Financial",
    "item": "DIAS"
  },
  {
    "category": "Social",
    "item": "Andrew Barnett Explains..."
  },
  {
    "category": "Financial",
    "item": "FP Sales"
  }
]
我想这样安排:

[
  {
    "category": "Financial",
    "items": [
      {
        "item": "DIAS"
      },
      {
        "item": "FP Sales"
      }
    ]
  },
  {
    "category": "Social",
    "items": [
      {
        "item": "Andrew Barnett Explains..."
      }
    ]
  }
]
实现这一目标的最佳方式是什么?我相信有比使用两个循环更好的方法吗


谢谢

我整理了一些有用的东西:

我不确定你们如何定义这里最好的方法,你们可能需要具体一点。但是,此方法使用通过项的单个循环

var data = [
  {
    "category": "Financial",
    "item": "DIAS"
  },
  {
    "category": "Social",
    "item": "Andrew Barnett Explains..."
  },
  {
    "category": "Financial",
    "item": "FP Sales"
  }
];
var newData = {};
var res = new Array();
$(data).each(function() {
    var cat = this.category;
    if (newData[cat] === undefined) {
        newData[cat]={};
        newData[cat].category = cat;
        newData[cat].Items = [{"Item": this.item}];
        res.push(newData[cat]);
    }
    else {
        newData[cat].Items.push({"Item": this.item});
    }
});

编辑:演示:

使用下划线方法

 _.groupBy
您可以这样做:

尝试建立类似{Financial:[DIAS,FP Sales],Social:[Andrew Barnett解释,…],…}的中间结果。你是在问绩效,还是在问如何做到这一点?两个循环有什么问题?我想问的是如何以最好的方式实现这一点。为什么您得到的JSON数据不是以这种格式开始的?重新处理已经处理过一次的东西似乎很奇怪。这是从Joomla组件生成的,我不允许修改JSON视图。谢谢。在这里学到了一些东西。
 _.groupBy