首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lodash OrderBy字母

Lodash OrderBy字母
EN

Stack Overflow用户
提问于 2019-11-26 20:14:17
回答 2查看 1.1K关注 0票数 0

我试图理解为什么lodash函数不正确地将它们排序。(我想是在我脑子里错了)。

代码语言:javascript
复制
const data = [
  {
    id: '1',
    name: 'FLUoxetine (FLUoxetine 20 mg oral capsule)'
  },
  {
    id: '2',
    name: 'ascorbic acid (Vitamin C 25 mg oral tablet, chewable)'
  }
];

const orderedData = _.orderBy(data, ["name"], ["asc"]);

console.log("DATA>>>>", orderedData);
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>

上面的代码正在注销。

代码语言:javascript
复制
DATAZZZZ 
[Object, Object]
0: Object
id: "1"
name: "FLUoxetine (FLUoxetine 20 mg oral capsule)"
1: Object
id: "2"
name: "ascorbic acid (Vitamin C 25 mg oral tablet, chewable)"

当我认为它会像这样退出时

代码语言:javascript
复制
DATAZZZZ 
[Object, Object]
0: Object
id: "2"
name: "ascorbic acid (Vitamin C 25 mg oral tablet, chewable)"
1: Object
id: "1"
name: "FLUoxetine (FLUoxetine 20 mg oral capsule)"

有人能解释一下为什么吗?我假设这与前三个字母大写有关。我看了房客的文件,但我要么漏掉了什么,要么不完全理解。任何帮助都会很棒。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-26 20:21:54

小写字母和大写字母有不同的代码,大写字母在小写之前。如果需要不区分大小写的排序,可以将格式化程序函数作为迭代器传递给orderBy

代码语言:javascript
复制
const sortedData = _.orderBy(data, [data => data.name.toLowerCase()], ['asc']);
console.log(sortedData);
票数 2
EN

Stack Overflow用户

发布于 2019-11-26 20:24:33

这确实与资本化有关。我建议使用普通的sort方法,在这里您可以制定自己的规则。此外,它是在您的项目中少一个库!请注意,这将对当前数组进行排序,而不是复制现有数组。

代码语言:javascript
复制
const data = [
  {
    id: '1',
    name: 'FLUoxetine (FLUoxetine 20 mg oral capsule)'
  },
  {
    id: '2',
    name: 'ascorbic acid (Vitamin C 25 mg oral tablet, chewable)'
  }
];

data.sort((a, b) => {
    const textA = a.name.toUpperCase();
    const textB = b.name.toUpperCase();
    return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59058725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档