Javascript 基于2个属性的排序函数

Javascript 基于2个属性的排序函数,javascript,jquery,html,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:"sending"},{name:"one",direction:"sending"},{name:"two",direction:"receiving"}];
我需要的是让数组像这样集中在一起(命名一和二(接收),然后命名一和二(发送)):

我用克隆学的方法来做这件事,但还有更优雅的吗?就像一个漂亮的自定义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;
            });

我不知道你为什么要做
myStuff.split(',')
。。。这在阵列上不起作用

您可以按自定义函数对数组进行排序,如下所示:

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

这将在适当的位置对数组进行排序。另请参见和

这不是排序,这是[].map()的一个用例……关于数组上的split()的好观点。这只是我作为一种潜在方法编写的伪代码。
myStuff.sort(function(a,b) {
    return a.direction.localeCompare(b.direction)
})