Javascript - 按一个属性分组,按另一个属性排序

标签 javascript arrays sorting

我有一个对象数组,目前我将它们按一个属性(数字)排序。我有一个排序按钮,允许用户按另一个属性(字符串)对它们进行排序。如何按特定值对它们进行排序,并保持它们在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/

相关文章:

C++按类中的变量对 vector 进行双重排序

javascript - PercentLoaded 对大型 swf 文件的负结果

javascript - jQuery - 下一个(元素)不工作

javascript - 访问resolve和根index.html文件中的$rootScope

c# - 要提供哪种参数类型(即 IEnumerable 且具有 Count)?

javascript - 如何按两个属性对数组进行排序 - 按字母顺序排列但末尾为空值?

javascript - 从 URL 获取图像并在 React JS 中设置为背景

java - 如何确保写入整数数组的可见性

javascript - Javascript 中的波浪排序

c++ - std::sort 用于 C++ 中的二维 vector