我有json示例,我需要使用javascript / jquery根据值进行排序。 我在下面添加了示例json代码和预期的输出代码。 例如,有这个代码:
var json = {
"users": {
"metrics": {
"e-f2e04fc7aa72": {
"order": 5,
"displayName": "User5"
},
"bb202c11-5d44-48a": {
"order": 1,
"displayName": "User2"
},
"a0d6e3afa2b5": {
"order": 3,
"displayName": "User3"
},
"46af13d22392856da": {
"order": 4,
"displayName": "User4"
},
"0c5f43cdd73b9cf623": {
"order": 2,
"displayName": "User2"
}
}
}
}
我怎样才能将这个json排序为:
var json = {
"users": {
"metrics": {
"bb202c11-5d44-48a": {
"order": 1,
"displayName": "User1"
},
"0c5f43cdd73b9cf623": {
"order": 2,
"displayName": "User2"
},
"a0d6e3afa2b5": {
"order": 3,
"displayName": "User3"
},
"46af13d22392856da": {
"order": 4,
"displayName": "User4"
},
"e-f2e04fc7aa72": {
"order": 5,
"displayName": "User5"
},
}
}
}
答案 0 :(得分:0)
您可以使用以下方法迭代指标的属性: for .. in
,并创建用户列表。然后它可以被分类。
var users = []
var metrics = json.users.metrics
for (var userId in metrics) {
var user = metrics[userId];
user["userId"] = userId;
users.push(user);
}
然而,在您期望的格式中,您不能这样做,因为对象属性无法排序(据我所知)。
答案 1 :(得分:0)
您无法对对象进行排序,但您可以从中创建排序列表。
var metricsSorted = [];
for (var key in json.users.metrics) {
var metric = json.users.metrics[key];
metric.id = key;
metricsSorted.push(metric);
}
metricsSorted.sort(function(a, b) {
return a.order - b.order;
});
console.log(metricsSorted);
答案 2 :(得分:0)
首先,您无法对对象进行排序,您可以将目标json定义为数组,以便对其进行排序。
假设您可以将json定义为:
var json = {
"users": {
"metrics": [
{ "id": "bb202c11-5d44-48a",
"order": 1,
"displayName": "User1"
},
{ "id": "0c5f43cdd73b9cf623",
"order": 2,
"displayName": "User2"
},
{ "id": "a0d6e3afa2b5",
"order": 3,
"displayName": "User3"
},
{ "id": "46af13d22392856da",
"order": 4,
"displayName": "User4"
},
{ "id": "e-f2e04fc7aa72",
"order": 5,
"displayName": "User5"
}
]
}
}
然后您可以使用下面的代码将原始json排序到它中,如下所示:
var metrics = []
for(var id in json.users.metrics){
metrics.push({"id": id,"order":json.users.metrics[id].order,"displayName":json.users.metrics[id].displayName})
}
metrics.sort(function(a,b) { return a.order - b.order } );
json.users.metrics = metrics
//console.log(JSON.stringify(json))