如何按数值对 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_INTEGER9007199254740991 @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项目进行排序

Java按整数字段对对象数组进行排序,如果它们相同,则按另一个整数值排序

alpha 对具有相同整数值且应按升序排列的列表进行排序[重复]