gpt4 book ai didi

javascript - 按两个键相等对对象数组进行排序

转载 作者:行者123 更新时间:2023-11-28 12:15:19 26 4
gpt4 key购买 nike

我正在尝试按两个键对对象数组进行排序,其中第一个按升序排序,第二个按相等排序。我尝试仅按第一个属性对数组进行排序:

var test_array = [{number: 1, color: "#EEEE23"},
{number: 4, color: "#FFFFFF"},
{number: 5, color: "#EEEE23"},
{number: 1, color: "#FFFFFF"},
{number: 6, color: "#CCCC23"},
{number: 1, color: "#EEEE23"},
{number: 2, color: "#EEEE23"},
{number: 3, color: "#FFFFFF"},
{number: 1, color: "#FFFFFF"},
{number: 2, color: "#FFFFFF"},
{number: 3, color: "#EEEE23"},
{number: 2, color: "#EEEE23"},
{number: 3, color: "#FFFFFF"},
{number: 2, color: "#FFFFFF"}]

test_array.sort(function(x,y){
return x.number - y.number || x.color === y.color

我的目标是让数组看起来像这样,其中颜色也排序:

var test_array = [{number: 1, color: "#EEEE23"},
{number: 1, color: "#EEEE23"},
{number: 1, color: "#FFFFFF"},
{number: 1, color: "#FFFFFF"},
{number: 2, color: "#EEEE23"},
{number: 2, color: "#EEEE23"},
{number: 2, color: "#FFFFFF"},
{number: 2, color: "#FFFFFF"},
{number: 3, color: "#EEEE23"},
{number: 3, color: "#FFFFFF"},
{number: 3, color: "#FFFFFF"},
{number: 4, color: "#FFFFFF"},
{number: 5, color: "#EEEE23"},
{number: 6, color: "#CCCC23"}]

我的解决方案是否太天真,使用相等来排序不太容易?

最佳答案

使用相等比较没有意义,因为 sort() 函数期望返回值为数字;相等比较返回 truefalse。相反,您可以使用 String .localeCompare() 方法:

return x.number - y.number || x.color.localeCompare(y.color);

.localeCompare() 函数完全符合您的要求,根据字符串的字典顺序返回 -1、0 或 1。

关于javascript - 按两个键相等对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50937293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com