首页 > 解决方案 > 如何将 sort() 与两个过滤器结合使用?

问题描述

我在一个数组上有两个过滤器,想按字母顺序排序。当 i 时logconst sortAlphabeticEnabled它按字母顺序返回客户端的名称(来自 i18n 文件)。但似乎并没有更新项目。有谁知道如何解决这个问题?如果你愿意,我可以上传 i18n 文件。

标签: javascriptreactjs

解决方案


传递给的函数.sort()接受两个参数,并且必须返回它们的比较结果(不仅仅是trueor false)。要比较字符串值,您可以使用.localeCompare().

此外,您应该先进行条件检查以避免额外的操作:

const filteredCases = enabledCategoryFilter ? 
    allCases.filter(cases => cases.category.includes(enabledCategoryFilter)) : allCases;
filteredCases = awardFilterEnabled ?
    filteredCases.filter(cases => cases.awardWinning) : filteredCases;
filteredCases = sortAlphabeticEnabled  ? 
    filteredCases.sort((case1, case2) => case1.client.localeCompare(case2.client)) : filteredCases;

否则,无论您是否需要过滤,JS 都会枚举数组项。


推荐阅读