碎片時間學(xué)編程「270]:JavaScript 數(shù)組排序速記

JavaScript 數(shù)組排序速記
在對原始值數(shù)組(例如字符串或數(shù)字)進行排序時,您經(jīng)常會看到很多代碼如下所示:
const arr = [8, 2, 1, 4, 5, 0];
// Sort in ascending order
arr.sort((a, b) => {
?if (a > b) return 1;
?if (b > a) return -1
?return 0;
}); // [0, 1, 2, 4, 5, 8]
雖然這段代碼可以完成這項工作,但還有一個單行代碼可供選擇。這個技巧取決于 Array.prototype.sort() 方法期望正值或負值來執(zhí)行兩個元素之間的交換,從而允許比 1 和 -1 更靈活的值。減去數(shù)組中的數(shù)值就足夠了,也可以用相反的方式對數(shù)組進行排序:
const arr = [8, 2, 1, 4, 5, 0];
// Sort in ascending order
arr.sort((a, b) => a - b); // [0, 1, 2, 4, 5, 8]
// Sort in descending order
arr.sort((a, b) => b - a); // [8, 5, 4, 2, 1, 0]
如果您正在使用字符串?dāng)?shù)組,您應(yīng)該改用 String.prototype.localeCompare() 方法,因為它通過考慮特定區(qū)域設(shè)置及其獨特需求提供了更大的靈活性:
const s = ['Hi', 'Hola', 'Hello'];
// Sort in ascending order
arr.sort((a, b) => a.localeCompare(b)); // ['Hello', 'Hi', 'Hola']
// Sort in descending order
arr.sort((a, b) => b.localeCompare(a)); // ['Hola', 'Hi', 'Hello']
更多內(nèi)容請訪問我的網(wǎng)站:https://www.icoderoad.com