我试图理解为什么lodash函数不正确地将它们排序。(我想是在我脑子里错了)。
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);<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
上面的代码正在注销。
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)"当我认为它会像这样退出时
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)"有人能解释一下为什么吗?我假设这与前三个字母大写有关。我看了房客的文件,但我要么漏掉了什么,要么不完全理解。任何帮助都会很棒。谢谢!
发布于 2019-11-26 20:21:54
小写字母和大写字母有不同的代码,大写字母在小写之前。如果需要不区分大小写的排序,可以将格式化程序函数作为迭代器传递给orderBy:
const sortedData = _.orderBy(data, [data => data.name.toLowerCase()], ['asc']);
console.log(sortedData);发布于 2019-11-26 20:24:33
这确实与资本化有关。我建议使用普通的sort方法,在这里您可以制定自己的规则。此外,它是在您的项目中少一个库!请注意,这将对当前数组进行排序,而不是复制现有数组。
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;
});https://stackoverflow.com/questions/59058725
复制相似问题