繁体   English   中英

根据值对JavaScript中的对象键进行排序

[英]Sorting object keys in javascript based on value

我收到来自3rd party api的奇怪响应,如下所示

{
  "27000CE": -1,
  "27100CE": 2,
  "27300CE": -1,
  "27200CE": 5
}

如何按值排序?

例如上升或下降。

{
  "27300CE": -1,
  "27000CE": -1,
  "27100CE": 2,
  "27200CE": 5
}

我尝试了如下

sortArrayOfObjects = (arr, key) => {
    return arr.sort((a, b) => {
        return a[key] - b[key];
    });
};

但是所有键都不一样,这就是问题所在。

您可以对Object.entries进行排序,然后使用reduce创建一个新对象,如下所示:

 const response = { "27100CE": 2, "27000CE": -1, "27300CE": -1, "27200CE": 5 } const sorted = Object.entries(response) .sort((a, b) => a[1] - b[1]) .reduce((r, [key, value]) => { r[key] = value return r }, {}) console.log(sorted) 

仅当您没有任何整数键作为response 更多信息: JavaScript是否保证对象属性顺序?

我相信您会收到一个对象,在这种情况下,您的输入将如下所示:

let obj = {"27300CE": -1, "27200CE": 5, "27100CE": 2, "27000CE": -1}

您可以按如下所示的值进行排序:

let keys = Object.keys(obj);

// Then sort by using the keys to lookup the values in the original object:
keys.sort(function(a, b) { return obj[a] - obj[b] });

console.log(keys);//["27300CE", "27000CE", "27100CE", "27200CE"]

根据新的键序列,您可以创建一个新的obj,如果您愿意,可以将其排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM