如何按数值对 json 进行排序?
Posted
技术标签:
【中文标题】如何按数值对 json 进行排序?【英文标题】:How do I sort a json by numeric value? 【发布时间】:2018-12-22 07:37:18 【问题描述】:我将如何按数值将 json 排序到数组中,然后如何轻松访问该信息。
"362439239671087109":"coins":19,"178538363954003968":"coins":18,"234255082345070592":"coins":137
奇怪的数字是不和谐的用户 ID。
【问题讨论】:
哪个数值?你尝试过做什么? 那不是一个数组,它是一个字典(也叫 hashmap)——这些东西是无法排序的。您可以将其转换为数组 - 这有帮助吗? @SQLHacks 在 JS 中通常称为对象。 【参考方案1】:// Code that can handle VERY large numbers by treating them as strings.
var a =
"362439239671087109":
"coins": 19
,
"178538363954003968":
"coins": 18
,
"234255082345070592":
"coins": 137
;
function padWithZeros(s)
return ("000000000000000000000" + s).substr(-20);
var b = Object.keys(a);
b.sort(
function(x, y)
var s1 = padWithZeros(a[x].coins);
var s2 = padWithZeros(a[y].coins);
if (s1 === s2)
return 0;
if (s1 > s2)
return 1;
else
return -1;
);
console.log(b);
【讨论】:
【参考方案2】:var a = "362439239671087109":"coins":19,"178538363954003968":"coins":18,"234255082345070592":"coins":137;
var b = Object.keys(a);
b.sort(function(x,y)return a[x].coins-a[y].coins);
console.log(b);
【讨论】:
感谢您这么快就打开了,json 经常被添加和更改,我可以直接在 (var a =) 中调用 json 文件吗 对不起,我不明白。也许你可以编辑你的问题来解释。 我将如何扭转这一局面。目前这会将它们从最少到最多排序 如果这些数字继续变大,请注意超过Number.MAX_SAFE_INTEGER
。 9007199254740991
@Nathan,如果有人的回答解决了您的问题,那么您应该投票/接受它。【参考方案3】:
嗯。首先,制作关联数组,如果json是从bakcend生成的,例如在php中,您可以使用函数来制作订单数组。 ---> http://php.net/manual/en/array.sorting.php 看到这个: Converting javascript object with numeric keys into array
【讨论】:
您的第一个链接是针对 PHP 的,而不是针对 Javascript 的。 JS 没有关联数组。以上是关于如何按数值对 json 进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
如何按前缀整数值对 ArrayList<String> 进行排序[重复]
如何在android中按数值列对listview项目进行排序