我有一个大对象,需要按值排序,因此该对象以降序排列(范围为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

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

最佳答案

您可以使用变量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);

10-06 02:06