我有一个对象数组,目前我将它们按一个属性(数字)排序。我有一个排序按钮,允许用户按另一个属性(字符串)对它们进行排序。如何按特定值对它们进行排序,并保持它们在javascript中的数字排序顺序?
一个简单的例子,使用一个人的名字、年龄和最喜欢的颜色:
Steve, 27, Blue
Joe, 28, Red
John, 30, Green
Jane, 33, Blue
Julie, 35, Blue
Kevin, 40, Red
因此,如果用户想按最喜欢的红色颜色的人对列表进行排序,我希望它显示如下:
Joe, 28, Red
Kevin, 40, Red
Steve, 27, Blue
Jane, 33, Blue
Julie, 35, Blue
John, 30, Green
所选属性之后的属性顺序并不重要,只要它们按年龄分组和排序即可。例如,上面的列表(按红色排序)可以将 John 列在 Kevin 之后,只要所有 Steve、Jane 和 Julie 都保持相同的顺序即可。
基本上,我想按字符串分组,然后按数字对组进行排序。
感谢您的帮助!
最佳答案
Javascript 的 .sort()
function 将函数作为参数,可用于进行任意排序。
一个可以完成您想要的排序的示例:
people.sort(function(a, b) {
if (a.color == 'Red' && b.color != 'Red') return 1;
if (a.color != 'Red' && b.color == 'Red') return -1;
return 0;
});
关于Javascript - 按一个属性分组,按另一个属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323758/