将参数传递给匿名排序函数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我不知道,这个连续的反对票是在逃的;)