【发布时间】:2018-01-17 21:25:47
【问题描述】:
假设我有一个 JSON 格式的对象(如下所示),我想按 UserID 对其进行排序
oUserColors = { "users": [
{ "UserID": 31, "Color": "Red" },
{ "UserID": 30, "Color": "Red" },
{ "UserID": 32, "Color": "Green" },
{ "UserID": 30, "Color": "Green" },
{ "UserID": 32, "Color": "Red" }
] };
我可以很容易地使用以下函数来做到这一点。
objSortedUserColors = oUserColors.users.sort(function (a, b) {
return b.UserID - a.UserID; // sort oUserColors.users in descending order.
});
这会给我这个...
objSortedUserColors = { "users": [
{ "UserID": 32, "Color": "Red" },
{ "UserID": 32, "Color": "Green" },
{ "UserID": 31, "Color": "Red" },
{ "UserID": 30, "Color": "Red" },
{ "UserID": 30, "Color": "Green" }
] };
但是,如果我还想按颜色过滤对象,如果用户同时使用红色和绿色作为颜色,那么红色会被移除,只剩下绿色。但是如果用户只有红色作为他们的颜色,它就会保持不变。导致这样的事情......
objFilteredSortedUserColors = { "users": [
{ "UserID": 32, "Color": "Green" },
{ "UserID": 31, "Color": "Red" },
{ "UserID": 30, "Color": "Green" }
] };
我被困住了。任何建议将不胜感激!
【问题讨论】:
-
请向我们展示您迄今为止尝试过的对您不起作用的方法。
-
缺少最重要的标签
javascript。其次,似乎排序与您的问题无关......为什么还要提到它? -
"一个JSON格式的对象"---没有这个东西,它只是一个JS对象。
-
@trincot:好点。我原本以为我可以一次性排序/过滤。看来我应该先排序,然后过滤..
标签: javascript arrays json sorting