使用Javascript数组sort()方法和比较函数的字母搜索
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Javascript数组sort()方法和比较函数的字母搜索相关的知识,希望对你有一定的参考价值。
这里是使用sort()
方法的反向字母搜索
注意,如compareFunction
所述提供了MDN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
function reverseAlpha(arr) {
return arr.sort(function(a, b) {
console.log('a:' + a);
console.log('b:' + b);
if (a === b) {
return 0;
} else if (a < b) {
return 1;
} else {
return -1;
}
});
}
console.log(reverseAlpha(['l', 'h', 'z', 'b', 's'])); // Returns ['z', 's', 'l', 'h', 'b']
现在考虑以下字母搜索:
function alphaSort(arr) {
return arr.sort(function(a, b) {
console.log('a:' + a);
console.log('b:' + b);
if (a === b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
}
console.log(alphaSort(['l', 'h', 'z', 'b', 's'])); // Returns ['b', 'h', 'l', 's', 'z']
我的问题是,只需将return
else if...
条件的最后两个else
值交换为:
else if (a < b) {
return -1;
} else {
return 1;
}
这如何导致排序反转并变成字母?我认为这可以实现字母搜索,因为我们只是将这种逻辑与条件交换:
-如果compareFunction(a, b)
返回的值小于0,则将a
排序为小于b
的索引(即a
在前)]
-如果compareFunction(a, b)
返回大于0,则将b
排序为小于a
的索引(即b
在前)。
答案
我的问题是,如果... else条件,只需交换else的最后两个返回值...这如何导致排序反转并变成字母?
以上是关于使用Javascript数组sort()方法和比较函数的字母搜索的主要内容,如果未能解决你的问题,请参考以下文章