gpt4 book ai didi

javascript - 使用 localeCompare 的字母比较器 Javascript

转载 作者:行者123 更新时间:2023-12-02 23:44:07 25 4
gpt4 key购买 nike

我正在尝试创建一个比较器,它对于大于、小于和等于返回 true 或 false。我发现 localeCompare 函数比较 2 个字符串并返回 1,0 或 -1。我尝试返回 true 或 false,如下所示,但这种方式不起作用。这怎么行?

let ComparatorAlphabetical = (item) => {
let _isGreaterThan = if(item.localeCompare(item2) == 1) => true;
let _isLessThan = if(item.localeCompare(item2) == -1) => false;
let _isEqualTo = if(item.localeCompare(item2) == 0) => false;

return {
isGreaterThan: _isGreaterThan,
isLessThan: _isLessThan,
isEqualTo: _isEqualTo
}
}

该比较器将用于创建排序函数

let createSortFunc = (comparator) => (ascending) => {
let condition = ascending ? (comparator(item).isGreaterThan(item2)) : (comparator(item).isLessThan(item2));

return (array => array.sort(({ shortName: item1 }, { shortName: item2 }) => (!comparator(item1).isEqualTo(item2)) ?
(condition ? 1 : -1) :
0));
}

最佳答案

如果您尝试根据升序 bool 值对数组进行排序,您可以创建一个乘数值并将其设置为1或-1。然后只需将其乘以 localeCompare 返回的值即可:

let input = [{ shortName: 'b' }, { shortName: 'a' }, { shortName: 'Z' }]

function sort(array, ascending) {
const mutiplier = ascending ? 1 : -1;
return array.sort((a, b) => mutiplier * a.shortName.localeCompare(b.shortName))
}

console.log(sort(input, true)) // ascending
console.log(sort(input, false)) // descending

关于javascript - 使用 localeCompare 的字母比较器 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55933211/

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