(() => {
const stringComparer = (locales, options) => {
if (!locales) locales = 'en';
if (!options) options = { numeric: true, sensitivity: 'base' };
const collator = new Intl.Collator(locales, options);
return (a, b) => () => collator.compare(a, b);
};
const thenBy = (...args) => {
for (const arg of args) {
const x = arg();
if (x !== 0)
return x;
}
return 0;
};
const compareStr = stringComparer();
const data = [{ firstName: 'a', lastName: 'b' }, { firstName: 'c', lastName: 'a' }, { firstName: 'b', lastName: 'a' }];
data.sort((a, b) => thenBy(compareStr(a.lastName, b.lastName), compareStr(a.firstName, b.firstName)));
console.log(data);
})();
393100cookie-checkJavascript string compare