在名字和姓氏之后对数组进行排序,javascript

Rea*_*ent 3 javascript arrays sorting

目前我正在对firstName 上的数组进行排序。

currentUsers = currentUsers.sort(function(a, b) {
    if (a.firstName > b.firstName) {
        return 1;
    } else if (a.firstName < b.firstName) {
        return -1;
    }
};
Run Code Online (Sandbox Code Playgroud)

但我也想对姓氏进行排序。这样鲍勃·安德森就会排在鲍勃·鲍勃森之上。我在 stackoverflow 上查看了另一个问题,建议我添加:

currentUsers = currentUsers.sort(function(a, b) {
    if (a.firstName > b.firstName) {
        return 1;
    } else if (a.firstName < b.firstName) {
        return -1;
    }

    if (a.lastName > b.lastName) {
        return 1;
    } else if (a.lastName < b.lastName) {
        return -1;
    } else {
        return 0;
    }
};
Run Code Online (Sandbox Code Playgroud)

//编辑我遇到的问题是排序不断对firstName 中的每个字母进行排序。我如何只对名字的第一个字母进行排序,然后继续对姓氏进行排序?

Ame*_*lla 7

你可以试试这个ES6版本

const currentUsers = [{
  firstName: "Bob",
  lastName: "Adler"
}, {
  firstName: "Barney",
  lastName: "Jones"
}, {
  firstName: "Freddie",
  lastName: "Crougar"
}, {
  firstName: "Bob",
  lastName: "Adams"
}, {
  firstName: "Joe",
  lastName: "Lewis"
}, {
  firstName: "Joseph",
  lastName: "Lewis"
}];

const sortedUsers = currentUsers.sort((a, b) => {
          const result = a.firstName.localeCompare(b.firstName);

          return result !== 0 ? result : a.lastName.localeCompare(b.lastName);
        })

console.log(sortedUsers);
Run Code Online (Sandbox Code Playgroud)