javascript - 根据值对对象属性进行排序

标签 javascript

<分区>

我有一个对象数组:

[  
   {  
      "Accept Credit Cards":"17",
      "Take-Out":"17",
      "Alcohol":"16",
      "Caters":"10",
      "Takes Reservations":"11",
      "Smoking":"0",
      "Dogs Allowed":"1",
      "Outdoor Seating":"12",
      "Coat Check":"0",
      "Waiter Service":"14",
      "Wi-Fi":"10",
      "Good For Groups":"16",
      "Wheelchair Accessible":"13"
   }
]

我想根据值对其进行排序。所以我的结果应该是这样的:

[  
       {  
          "Accept Credit Cards":"17",
          "Take-Out":"17",
          "Alcohol":"16",
          "Good For Groups":"16",
          "Wheelchair Accessible":"13"
          AND SO ON.....

      }
]

我该怎么做?我尝试了一种。但这只是根据键排序。任何指点表示赞赏。

最佳答案

正如 RyanZim 在评论中提到的,对对象的属性进行排序并没有真正的目的。 JavaScript 不保证属性顺序,因此您不应依赖它们的顺序。但是,您可以创建属性数组并根据对象中的值对它们进行排序。

const arr = [  
   {  
      "Accept Credit Cards":"17",
      "Take-Out":"17",
      "Alcohol":"16",
      "Caters":"10",
      "Takes Reservations":"11",
      "Smoking":"0",
      "Dogs Allowed":"1",
      "Outdoor Seating":"12",
      "Coat Check":"0",
      "Waiter Service":"14",
      "Wi-Fi":"10",
      "Good For Groups":"16",
      "Wheelchair Accessible":"13"
   }
];

const sorted = Object.keys(arr[0]).sort((a, b) => arr[0][b] - arr[0][a]);

sorted.forEach(x => console.log(x + ': ' + arr[0][x]));

如果你想更高级,按字母顺序排序:

const arr = [  
   {  
      "Accept Credit Cards":"17",
      "Take-Out":"17",
      "Alcohol":"16",
      "Caters":"10",
      "Takes Reservations":"11",
      "Smoking":"0",
      "Dogs Allowed":"1",
      "Outdoor Seating":"12",
      "Coat Check":"0",
      "Waiter Service":"14",
      "Wi-Fi":"10",
      "Good For Groups":"16",
      "Wheelchair Accessible":"13"
   }
];

const sorted = Object.keys(arr[0]).sort((a, b) => {
  if (arr[0][a] > arr[0][b]) return -1;
  if (arr[0][a] < arr[0][b]) return 1;
  if (a > b) return 1;
  if (a < b) return -1;
  return 0;
});

sorted.forEach(x => console.log(x + ': ' + arr[0][x]));

关于javascript - 根据值对对象属性进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751657/

相关文章:

javascript - 使用 AJAX 定期调用 PHP

javascript - 使用 html 进行 url 到 url 重定向

javascript - 根据悬停对象更改 D3 工具提示背景颜色

javascript - 两条记录插入到 Mysql 数据库中而不是一条

javascript - 同位素布局问题

javascript - 当元素进入窗口的 View 时执行函数

javascript - 如何在javascript中读取txt文件的最后一个值

javascript - three.js 是否有等效的背面可见性?

javascript - Silverstripe 图片上传为 javascript 变量

javascript - Angular,测试自定义提供程序和配置