javascript - Lodash orderBy 函数未正确排序
问题描述
嗨,每个人都对反应的 lodash 功能有疑问。我正在尝试订购一个字符串数组。我正在从我在操场上使用的文档中完全复制代码并且工作正常,但是当我尝试在我的代码中运行它时,我遇到了与使用排序数组时相同的问题。
抓住我的数组并将其直接扔到 orderBy 函数中,但它没有正确排序。
我希望 editionsCount 根据其值进行排序,但它不断地对数字进行排序,而不是根据它们的实际值。
例如 108 将小于 23,因为 2 大于 3。
这是我在其中运行 lodash 函数的代码
const stableSort = (array, comparator) => {
console.log(_.orderBy(array, ["editionsCount"], ["desc"]));
}
这是我的回复截图
提前致谢:)
解决方案
的值editionsCount
是一个字符串,并按词法顺序排序。
该_.orderBy()
函数还接受一个函数作为迭代对象。要按数字顺序排序,请提供一个将字符串转换为数字的函数。我使用了一元运算+
符。
const arr = [{"editionsCount":"1"},{"editionsCount":"2"},{"editionsCount":"10"},{"editionsCount":"20"}]
// sort by numeric order
const sortByNumericValue = _.orderBy(arr, o => +o.editionsCount, ["desc"])
console.log(sortByNumericValue)
// Sort by lexical order
const sortByLexicalOrder = _.orderBy(arr, o => o.editionsCount, ["desc"])
console.log(sortByLexicalOrder)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
推荐阅读
- php - 不要用动态路由重写链接生成器
- ios - 无法同时满足约束 iOS
- swift - AVCaptureDevice 无法为我移植了 Catalyst 的 macOS 应用找到任何设备
- c++ - cout<<中的未知编译器错误理论上它可以工作
- google-apps-script - 如何打开 G Suite 附加边栏?
- java - 支持事务关联的 Java 或 Spring 异步任务执行器?
- amazon-web-services - 以编程方式从特定版本下载 s3 文件
- python - 将 .xlsx 文件合并为一个而不覆盖数据
- excel - 如何使用 VBA 在 Excel 中引用“活动/选定”图表数据点
- javascript - args._[0] 中的 ._[0] 有什么作用?