首页 > 解决方案 > 如何根据对象属性按照我选择的顺序对javascript中的数组中的对象进行排序?

问题描述

假设我有一个这样的数组:

var objects = [
  { name: "steve", status: added },
  { name: "john", status: added },
  { name: "drew", status: none },
  { name: "aaron", status: none },
  { name: "jeff", status: hidden },
  { name: "gil", status: hidden },
  { name: "marc", status: removed },
  { name: "bill", status: removed }
];

...我想按状态对其进行排序,但有:

看到这不是按字母顺序排列的,我将如何使用 sort 方法来做到这一点?

我能想到的唯一想法是使每个具有各自状态的对象成为一个数组,然后将它们重新连接在一起。谢谢你。

标签: javascriptarrayssortingobject

解决方案


给定名为 objects 的数组变量,您应该实现一个 sort compareFunction:

objects = [
  { name: "steve", status: added },
  ...
]

你应该使用:

objects.sort(compareFunction);

其中 objects 是您的数组实例, compareFunction 是您可以使用标准定义的函数。

在比较函数中,根据您的排序标准返回 1、0 或 -1。

例如,您可以使用辅助关联对象:

var aux = {
  "removed": 1, "added": 2, "none": 3, "hidden": 4
};

那么您的比较功能将是:

objects.sort(function(a,b) {
  return aux[a.status] - aux[b.status];
});

推荐阅读