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