gpt4 book ai didi

javascript - 如何将附加参数传递给排序函数

转载 作者:行者123 更新时间:2023-11-29 21:42:45 25 4
gpt4 key购买 nike

我有一个二维数组,我正在使用自定义排序函数按列对其进行排序。我的代码结构与此类似:

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 函数的 primaryColsecondaryCol 参数。我想要做的是将 compareNumber 函数移到 sortBy 之外。在这种情况下,代码将无法运行,因为 compareNumber 无法访问 primaryColsecondaryCol。将 primaryColsecondaryCol 传递给 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);

那么,除了 ab 之外,是否有任何方法可以使它工作,将额外的参数传递给排序函数?

最佳答案

您可以使用 bind 来传递参数:

function compareNumber(a, b) {
if (a[this[0]] == b[this[0]]) {
return a[this[0]] < b[this[1]] ? -1 : 1;
}
return a[this[0]] - b[this[0]];
}
function sortBy(array, primaryCol, secondaryCol) {
array.sort(compareNumber.bind([primaryCol, secondaryCol]));
}
sortBy(colors, 3, 0);

绑定(bind)参数现在分配给 this 值,因此您的 pirmaryCol 在 this[0] 中,而您的辅助参数在 this[1]

关于javascript - 如何将附加参数传递给排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com