# JavaScript中排序的函数怎么使用 在JavaScript中,数组排序是数据处理中最常见的操作之一。本文将详细介绍`Array.prototype.sort()`方法的使用技巧、注意事项以及常见应用场景。 ## 一、sort()方法基础 ### 1. 基本语法 ```javascript arr.sort([compareFunction])
const fruits = ['banana', 'Apple', 'Orange']; fruits.sort(); // 结果: ['Apple', 'Orange', 'banana'] (A的Unicode小于b)
注意:数字排序会出现意外结果
const nums = [10, 5, 80, 1]; nums.sort(); // 结果: [1, 10, 5, 80] (按字符串比较)
// 升序排列 nums.sort((a, b) => a - b); // 降序排列 nums.sort((a, b) => b - a);
const users = [ { name: 'John', age: 25 }, { name: 'Alice', age: 20 } ]; // 按年龄升序 users.sort((a, b) => a.age - b.age);
// 不区分大小写排序 fruits.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' })); // 按字符串长度排序 fruits.sort((a, b) => a.length - b.length);
users.sort((a, b) => { // 先按年龄,再按名字 return a.age - b.age || a.name.localeCompare(b.name); });
ES2019开始要求排序稳定性,但老环境需要polyfill:
function stableSort(array, compare) { const stabilized = array.map((el, index) => [el, index]); stabilized.sort((a, b) => { const order = compare(a[0], b[0]); return order !== 0 ? order : a[1] - b[1]; }); return stabilized.map(el => el[0]); }
// 奇偶分离排序 const oddEvenSort = arr => { return arr.sort((a, b) => { const aOdd = a % 2; const bOdd = b % 2; return bOdd - aOdd || a - b; }); };
const floatArray = new Float64Array([1.5, 2.3, 0.7]); floatArray.sort();
A: JavaScript中的数组是对象,sort()是原地算法(in-place)
arr.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
// Fisher-Yates洗牌算法才是正确做法 function shuffle(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; }
function sortTable(columnIndex, isNumeric) { const rows = [...table.rows].slice(1); rows.sort((a, b) => { const valA = a.cells[columnIndex].textContent; const valB = b.cells[columnIndex].textContent; return isNumeric ? valA - valB : valA.localeCompare(valB); }); rows.forEach(row => table.tBodies[0].appendChild(row)); }
searchResults.sort((a, b) => { const scoreA = a.relevance * 0.6 + a.rating * 0.4; const scoreB = b.relevance * 0.6 + b.rating * 0.4; return scoreB - scoreA; });
JavaScript的sort()方法虽然简单,但通过灵活使用比较函数可以实现各种复杂排序需求。关键点: 1. 数字排序必须提供比较函数 2. 对象排序需要指定属性 3. 多条件排序注意逻辑组合 4. 性能敏感场景考虑替代方案
掌握这些技巧,你将能高效处理90%以上的前端排序需求。 “`
文章共计约1000字,涵盖了基础用法、高级技巧、性能优化和实际案例,采用Markdown格式编写,包含代码示例和结构化标题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。