【发布时间】:2020-02-06 11:00:00
【问题描述】:
Belong 是我的对象集合的一个示例。
const a = [
{name: "John", size: "100"},
{name: "John", size: "80"},
{name: "John", size: "82"},
{name: "John", size: "110"},
{name: "John", size: "70"},
{name: "John", size: "M"},
{name: "John", size: "S"},
{name: "John", size: "XS"},
{name: "John", size: "L"},
{name: "John", size: "XL"},
]
如何在 JavaScript 中以自然的方式对 100 大于 80 以及 100 位于 80 之后的示例进行排序?
挑战在于 size 的值是数字和字符串的混合。
升序的期望结果:
[
{name: "John", size: "70"},
{name: "John", size: "80"},
{name: "John", size: "82"},
{name: "John", size: "100"},
{name: "John", size: "110"},
{name: "John", size: "L"},
{name: "John", size: "M"},
{name: "John", size: "S"},
{name: "John", size: "XL"},
{name: "John", size: "XS"},
]
降序的期望结果:
[
{name: "John", size: "XS"},
{name: "John", size: "XL"},
{name: "John", size: "S"},
{name: "John", size: "M"},
{name: "John", size: "L"},
{name: "John", size: "110"},
{name: "John", size: "100"},
{name: "John", size: "82"},
{name: "John", size: "80"},
{name: "John", size: "70"},
]
我已经按升序尝试了 Lodash JavaScript 库,但它没有正确排序,因为它看到 100 小于 80,因为 100 以 1 开头。
_.orderBy(a, ["size"], ["asc"])
【问题讨论】:
标签: javascript sorting sql-order-by lodash natural-sort