javascript - 如何将 sort() 与两个过滤器结合使用?
问题描述
我在一个数组上有两个过滤器,想按字母顺序排序。当 i 时log
,const sortAlphabeticEnabled
它按字母顺序返回客户端的名称(来自 i18n 文件)。但似乎并没有更新项目。有谁知道如何解决这个问题?如果你愿意,我可以上传 i18n 文件。
解决方案
传递给的函数.sort()
接受两个参数,并且必须返回它们的比较结果(不仅仅是true
or 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 都会枚举数组项。
推荐阅读
- python - AttributeError:“函数”对象没有属性“w”
- javascript - 如何在JS中对数字和字符串进行排序,同时保持字符串在前面的顺序和数字在后面的排序?
- android - 如何保存 Flutter Custom Scroll View 的滚动位置?
- php - 如何计算某个用户的按钮点击次数,然后显示计数?
- networking - 找到活动网络接口的 IP?
- json - 在 JQ 中选择包含在数组中
- c++ - 当一个库从草图文件夹中的 src 以外的目录包含到 arduino 代码中时出现错误未定义的引用
- elm - Elm 0.19 --优化和移植
- python - spacy 在 Windows 10 和 Python 3.5.3 上找不到模型'en_core_web_sm' :: Anaconda custom (64-bit)
- java - Mac 上的 Eclipse:无法解析导入 javafx