【问题标题】:Re-ordering an object by an integer value按整数值重新排序对象
【发布时间】:2017-03-03 02:13:49
【问题描述】:

我有一个需要按值排序的大对象,所以它按降序排列(范围是7-2)。目前,我不确定真正处理排序顺序的是什么,尽管我认为有一些逻辑,但对我来说似乎相当随机。

这是数据的一个示例子集:

property_list = {
   1 : {
       description : '...',
       specs : {
          bedroom_number: 7
       }
   },
   2 : {
      description : '...',
      specs : {
         bedroom_number: 3
      }
   },
   3 : {
      description : '...',
      specs : {
          bedroom_number: 5
      }
   }
}

所以我需要按specs.bedroom_number 重新排序,以便它们按照卧室编号值排列为753

这种排序可能吗?还是需要某种循环来处理对象并将每个对象添加到一组新数据中?

【问题讨论】:

  • 对象没有顺序。您可以对数组中对象的 进行排序,使用它,或者您可以将数据存储在数组中而不是对象中。
  • @MikeC 所以这只能通过数组实现?数组是如何排序的?
  • 如果您将它们放在一个数组中,您可以使用sort 函数。将您自己的排序函数传递给它,以便您比较 spec.bedroom_number 值。我发布的链接显示了如何编写自己的排序函数的示例。

标签: javascript sorting object


【解决方案1】:

您可以从变量property_list 创建一个新的对象数组,然后使用Array.prototype.sort()specs.bedroom_number 排序:

var property_list = {1: {description: '...',specs: {bedroom_number: 7}},2: {description: '...',specs: {bedroom_number: 3}},3: {description: '...',specs: {bedroom_number: 5}}},
    arr = Object
        .keys(property_list)
        .map(function (key) {
            return property_list[key];
        })
        .sort(function (a, b) {
            return b.specs.bedroom_number - a.specs.bedroom_number;
        });

console.log(arr);

【讨论】:

  • 很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2020-04-11
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多