【发布时间】:2021-06-14 18:17:53
【问题描述】:
我试图在忽略撇号的同时对名称进行排序。现在我正在使用 Javascript 并使用 mongodb 查询 mongo 数据库。在查询中,我通过lastName、firstName 对学生使用$sort。但是,当返回姓名时,姓名中带有' 的学生会排在没有姓名的学生之前。例如:
ex: (random, unsorted)
D'Marcus O'Connell
Damian O'Connell
Damian O'Claire
Dylan Oliver
在这里,D'Marcus O'Connell 将在 Damian O'Connell 之前,根据我的 $sort。但是,客户正在使用来自其遗留系统的单独成绩簿服务来导入名册,并且在他们的列表中,他们将忽略',而Damian O'Connell 将出现在D'Marcus O'Connell 之前,因为a 在m 之前字母表。 (我想也忽略具有不同字符值的大写字母?)
以下是我必须处理的来自查询的数据。现在我有过多的数组以防万一它可能有用。最初我想我会尝试对姓氏进行排序循环,如果姓氏相等,请检查名字......但我不知道如何去除' 中间排序或预排序。 (这里,Archie 和 Glenn 是我用作排序测试对象的两个独立名称,这就是它们被硬编码的原因)
var sortNamesArr = [];
var studentObjTemp = {};
var lastNamesArr = [];
var firstNamesArr = [];
for (i = 0; i < response[0].gridData.length; i++) {
var lastName = response[0].gridData[i].lastName;
var firstName = response[0].gridData[i].firstName;
if (firstName == "Archie") {
firstName = "A'rchie";
}
if (lastName == "Glenn") {
lastName = "G'lenn";
}
studentObjTemp = {lastName, firstName};
sortNamesArr.push(studentObjTemp);
lastNamesArr.push(response[0].gridData[i].lastName);
firstNamesArr.push(response[0].gridData[i].firstName);
}
请,任何帮助将不胜感激。如果至少你能指出我正确的方向。我看过其他使用正则表达式去除撇号的帖子,但它们似乎对我不起作用。
编辑:这是返回一组包含学生姓名的网格数据后的 sortNamesArr 示例 -
(10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {lastName: "Bowser", firstName: "Arnoldo"}
1: {lastName: "Coffey", firstName: "Abel"}
2: {lastName: "Dahl", firstName: "Alexis"}
3: {lastName: "Doyle", firstName: "A'rchie"}
4: {lastName: "Esquivel", firstName: "Bernadine"}
5: {lastName: "Fuller", firstName: "Ariel"}
6: {lastName: "G'lenn", firstName: "Anastasia"}
7: {lastName: "Nava", firstName: "Adrianne"}
8: {lastName: "Perry", firstName: "Alberta"}
9: {lastName: "Vera", firstName: "Anthony"}
【问题讨论】:
-
您是想去掉
's 以便存储的数据发生变化,还是只是为了排序而忽略它们? -
@B-Schmidt 仅用于排序。之后他们必须保留名称中的 '
标签: javascript regex mongodb sorting