Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给匿名排序函数javascript_Javascript_Arrays_Sorting_Anonymous Function - Fatal编程技术网

将参数传递给匿名排序函数javascript

将参数传递给匿名排序函数javascript,javascript,arrays,sorting,anonymous-function,Javascript,Arrays,Sorting,Anonymous Function,在多维排序中,它使用第一列作为排序列 var shapes = [ [5, "Pentagon"], [3, "Triangle"], [8, "Octagon"], [4, "Rectangle"] ]; shapes.sort(function(a, b) { return a[0] - b[0]; }); 我想编辑这个匿名函数,这样我就可以传递我想要排序的列序号,否则我将不得不为每一列使用不同的排序函数,它将很快变得非常混乱。我在谷歌上搜

在多维排序中,它使用第一列作为排序列

var shapes = [
    [5, "Pentagon"],
    [3, "Triangle"],
    [8, "Octagon"],
    [4, "Rectangle"]
    ];

shapes.sort(function(a, b)
{
    return a[0] - b[0];
});
我想编辑这个匿名函数,这样我就可以传递我想要排序的列序号,否则我将不得不为每一列使用不同的排序函数,它将很快变得非常混乱。我在谷歌上搜索过,但找不到合适的

粗略估计,我不知道,这不起作用,但这正是我想要的:

shapes.sort(function(a, b, COL)
{
    return a[COL] - b[COL];
});

其中COL是新传递的参数。谢谢

您可以这样做:

function createColumnSort(col){
    return function(a, b){
        if (a[col] > b[col]) return 1;
        if (a[col] < b[col]) return -1;
        return 0;
    }
}
//Usage:
shapes.sort(createColumnSort(0));
shapes.sort(createColumnSort(1));
函数createColumnSort(col){
返回函数(a,b){
如果(a[col]>b[col])返回1;
如果(a[col]
您可以使用携带:

function sort_func (column, a, b)
{
    return a[column] - b[column];
}
shapes.sort(sort_func.bind(null, column))
.sort()
函数不允许向其传递您自己的参数(除了
a
b
)。相反,您可以在
.sort()
之外声明参数,并在
.sort()
内部调用它

此外,如果在
.sort()
中使用
进行比较,它也会对这些单词进行排序

var形状=[
[5,“五角大楼”],
[3,“三角形”],
[8,“八角形”],
[4,“矩形”]
];
var-col=1;
形状。排序(函数(a,b)
{
返回a[col]>b[col];
});

控制台。日志(形状)哇!很多投反对票的答案还在继续!?发生了什么事?如果你在投反对票,请礼貌地告诉我为什么。它一定很有效,为什么是负数?@degr我不知道,这个连续的反对票是在逃的;)