Shortest possible code with ES6!
users.sort((a, b) => a.firstname.localeCompare(b.firstname))
String.prototype.localeCompare() basic support is universal!
Answer from Nachiketha on Stack OverflowSort an Array Alphabetically using the sort Method
JavaScript Array of Objects Sorting: How to Sort by a Specific Object Property
How can I sort a Javascript array alphabetically? - Stack Overflow
Sort Array Content Alphabetically?
Shortest possible code with ES6!
users.sort((a, b) => a.firstname.localeCompare(b.firstname))
String.prototype.localeCompare() basic support is universal!
Suppose you have an array users. You may use users.sort and pass a function that takes two arguments and compare them (comparator)
It should return
- something negative if first argument is less than second (should be placed before the second in resulting array)
- something positive if first argument is greater (should be placed after second one)
- 0 if those two elements are equal.
In our case if two elements are a and b we want to compare a.firstname and b.firstname
Example:
users.sort(function(a, b){
if(a.firstname < b.firstname) { return -1; }
if(a.firstname > b.firstname) { return 1; }
return 0;
})
This code is going to work with any type.
Note that in "real life"™ you often want to ignore case, correctly sort diacritics, weird symbols like ß, etc. when you compare strings, so you may want to use localeCompare. See other answers for clarity.
Your array already contains strings of names where the last name is the first part of the string, so you can just call the .sort() method.
Oh, and your array contains a typo:
'Blake, 'William' should be: 'Blake, William'
const people = [ 'Bernhard, Sandra', 'Bethea, Erin', 'Becker, Carl', 'Bentsen, Lloyd', 'Beckett, Samuel', 'Blake, William', 'Berger, Ric', 'Beddoes, Mick', 'Beethoven, Ludwig', 'Belloc, Hilaire', 'Begin, Menachem', 'Bellow, Saul', 'Benchley, Robert', 'Blair, Robert', 'Benenson, Peter' ];
console.log(people.sort());
The variables are simply mislabelled, see the following:
const alpha = people.sort((a, b) => {
const [aLast, aFirst] = a.split(', '); // expected and got ["Bernhard", "Sandra"]
const [bLast, bFirst] = b.split(', '); // expected and got ["Bethea", "Erin"]
return aLast > bLast ? 1 : -1;
})