【问题标题】:Sorting a JavaScript Object by specific property value按特定属性值对 JavaScript 对象进行排序
【发布时间】:2019-07-27 21:13:32
【问题描述】:

如果我有一个 JavaScript 对象,例如:

var currencies= {
  "EUR": 100, 
  "CHF": 15,
  "GPB": 75, 
  "JPN": 116, 
  "EUR": 12, 
  "JPN": 15, 
  "USD": 55, 
  "CHF": 22,
  "USD": 100, 
};

有没有办法按照这个特定的顺序对它们进行排序?

var currencies= {
  "EUR": 12, 
  "EUR": 100, 
  "USD": 55, 
  "USD": 100, 
  "GPB": 75, 
  "CHF": 15,
  "CHF": 22,
  "JPN": 15, 
  "JPN": 116, 
};

【问题讨论】:

  • 为什么首先要对对象进行排序?
  • 这是一个无效的对象,由于重复的键;你没有如图所示的对象
  • 对象键未按设计排序。如果您需要订购,请使用 Array 或 Map。
  • 对象列表,我的错
  • 请加上排序规则和真实数组,你有。

标签: javascript arrays json sorting object


【解决方案1】:

通过拥有一个包含具有单个键/值对的对象的数组,您可以将此对用于按键然后按值排序。

var currencies= [{ EUR: 100 }, { CHF: 15 }, { GPB: 75 }, { JPN: 116 }, { EUR: 12 }, { JPN: 15 }, { USD: 55 }, { CHF: 22 }, { USD: 100 }],
    order = { EUR: 1, USD: 2, GBP: 3, CHF: 4, JPN: 5 };

currencies.sort((a, b) => {
    var aa = Object.entries(a)[0],
        bb = Object.entries(b)[0];

    return order[aa[0]] - order[bb[0]] || aa[1] - bb[1];
});

console.log(currencies);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2023-04-03
    • 2016-02-08
    • 2019-11-21
    • 2019-08-02
    • 2019-12-03
    相关资源
    最近更新 更多