【问题标题】:How do I sort a json by numeric value?如何按数值对 json 进行排序?
【发布时间】:2018-12-22 07:37:18
【问题描述】:

我将如何按数值将 json 排序到数组中,然后如何轻松访问该信息。

{"362439239671087109":{"coins":19},"178538363954003968":{"coins":18},"234255082345070592":{"coins":137}} 

奇怪的数字是不和谐的用户 ID。

【问题讨论】:

  • 哪个数值?你尝试过做什么?
  • 那不是一个数组,它是一个字典(也叫 hashmap)——这些东西是无法排序的。您可以将其转换为数组 - 这有帮助吗?
  • @SQLHacks 在 JS 中通常称为对象。

标签: javascript json sorting numeric discord.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 没有关联数组。
    猜你喜欢
    • 2010-10-27
    • 2012-11-06
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2016-06-05
    相关资源
    最近更新 更多