Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用localeCompare的字母比较器Javascript_Javascript_Reactjs - Fatal编程技术网

使用localeCompare的字母比较器Javascript

使用localeCompare的字母比较器Javascript,javascript,reactjs,Javascript,Reactjs,我正在尝试创建一个比较器,它返回大于、小于和等于的true或false。我找到了localeCompare函数,它比较两个字符串并返回1,0或-1。我尝试返回正确或错误,如下所示,但这种方法不起作用。这怎么行 let ComparatorAlphabetical = (item) => { let _isGreaterThan = if(item.localeCompare(item2) == 1) => true; let _isLessThan = if(item

我正在尝试创建一个比较器,它返回大于、小于和等于的true或false。我找到了localeCompare函数,它比较两个字符串并返回1,0或-1。我尝试返回正确或错误,如下所示,但这种方法不起作用。这怎么行

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));
}

我猜你在找这样的东西:

let ComparatorAlphabetical = (item) => {
   let _isGreaterThan = (i) => item.localeCompare(i) == 1; 
   let _isLessThan = (i) => item.localeCompare(i) == -1; 
   let _isEqualTo = (i) => item.localeCompare(i) == 0;

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

但我同意James Coyle的观点,你似乎把事情复杂化了。

如果你试图根据
升序
布尔值对数组进行排序,你可以创建一个
乘数
值并将其设置为1或-1。然后将其乘以
localeCompare
返回的值:

let input=[{shortName:'b'},{shortName:'a'},{shortName:'Z'}]
函数排序(数组,升序){
常数倍乘器=递增?1:-1;
返回array.sort((a,b)=>multiplier*a.shortName.localeCompare(b.shortName))
}
log(排序(输入,true))//升序

console.log(sort(input,false))//降序
赋值表达式右侧不能有
if
语句。还有什么是
item2
也不需要
let=item.localeCompare(item2)==1升序
布尔值?@marijn如果工作,您能接受答案吗?是的,我认为重新思考一下你的设计会很好;)@阿迪加是的,这就是我想要的trying@Romain因为倒计时的缘故,我还不能去,但现在已经结束了