基于2个属性排序函数

时间:2015-10-16 19:17:35

标签: javascript jquery html

我已经阅读了很多关于自定义排序的内容,并且大多数似乎都使用大于或小于运算符来确定是返回一个对象还是另一个对象。

然而,我的情况有点不同。这是我的阵列:

var myStuff = [{name:"one",direction:"receiving"},{name:"two",direction:"sending"},{name:"one",direction:"sending"},{name:"two",direction:"receiving"}];

我需要的是让数组最终像这样集合在一起(名称一和二(接收)然后一和二(发送)):

var myStuff = [{name:"one",direction:"receiving"},{name:"two",direction:"receiving"},{name:"one",direction:"sending"},{name:"two",direction:"sending"}];

我把这种做法的方式放在一起,但有更优雅的东西吗?就像一个不错的自定义JavaScript排序功能。

            var temp = myStuff.split(",");

            $.each(temp, function(key,value){
                if( value.name == "one" && value.direction == "receiving")
                    myStuff[0] = value;
                if( value.name == "two" && value.direction == "receiving")
                    myStuff[1] = value;
                if( value.name == "one" && value.direction == "sending")
                    myStuff[2] = value;
                if( value.name == "two" && value.direction == "sending")
                    myStuff[3] = value;
            });

1 个答案:

答案 0 :(得分:2)

我不确定你为什么要做myStuff.split(',') ...不能在阵列上工作。

您可以按照自定义函数对数组进行排序:

myStuff.sort(function(a,b) {
    return a.direction.localeCompare(b.direction)
})

这将对数组进行排序。另请参阅Array.sortString.localeCompare