【问题标题】:Why sorting list is working for firefox but not working on chrome?为什么排序列表适用于 Firefox 但不适用于 chrome?
【发布时间】:2020-04-04 01:43:35
【问题描述】:

一旦第 次点击,下面的函数就会被调用。这适用于 Firefox,但不适用于 Chrome。


    handleSort(event) {
        let id = event.target.id;

        this.setState(prev => {
            console.log(prev);
            return { 
                [id]: !prev[id],
                books: prev.books.sort((a, b) =>
                    prev[id] ? a[id] < b[id] : a[id] > b[id]
                )
            };
        });
    }


【问题讨论】:

  • 你做了哪些测试? Chrome 中是否有任何内容被吐到您的控制台上?
  • 为什么就地排序,直接修改状态?
  • 我猜您的问题与 Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function? 有关,但不确定为什么它会在 firefox 中起作用?
  • 您实现比较器的方式适用于 Firefox,因为(也许)Firefox 引擎假定 booleantruefalse 分别为 -11。 Chrome 的实现似乎更敏感,因为它明确希望您从sort 比较器返回-101 之一。很高兴知道 Chrome 控制台中是否有任何错误。
  • @MananShah 嘿,你是对的。一旦我对平等进行了另一个比较,它就会很好地工作。

标签: javascript reactjs


【解决方案1】:

您实现比较器的方式适用于 Firefox,因为(也许)Firefox 引擎假定布尔值 truefalse 分别为 1-1。 Chrome 的实现似乎更敏感,因为它明确希望您从排序比较器返回-101 之一。

您可能想更改 sort() 中的比较,使其适用于所有浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2014-11-17
    • 2015-06-09
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多