【发布时间】:2015-08-24 14:07:17
【问题描述】:
我有一个二维数组,我正在使用自定义排序函数按列对其进行排序。我的代码结构是这样的:
function sortBy(array, primaryCol, secondaryCol) {
function compareNumber(a, b) {
if (a[primaryCol] == b[primaryCol]) {
return a[secondaryCol] - b[secondaryCol] ? -1 : 1;
}
return a[primaryCol] - b[primaryCol];
}
array.sort(compareNumber);
}
sortBy(colors, 3, 0);
在compareNumber 函数中,我正在访问sortBy 函数的primaryCol 和secondaryCol 参数。我想要做的是将compareNumber 函数移到sortBy 之外。在这种情况下,代码将不起作用,因为compareNumber 无法访问primaryCol 和secondaryCol。同样将primaryCol 和secondaryCol 传递给compareNumber 函数也没有任何好处,因为我猜它只需要两个参数。
function compareNumber(a, b, primaryCol, secondaryCol) {
if (a[primaryCol] == b[primaryCol]) {
return a[secondaryCol] < b[secondaryCol] ? -1 : 1;
}
return a[primaryCol] - b[primaryCol];
}
function sortBy(array, primaryCol, secondaryCol) {
array.sort(compareNumber, primaryCol, secondaryCol);
}
sortBy(colors, 3, 0);
那么,除了a 和b 之外,还有什么方法可以让这个工作,将额外的参数传递给排序函数?
【问题讨论】:
标签: javascript arrays sorting