//! 数组扩展 sort方法 不是es6新增的方法 //! 功能 是 对原数组进行排序 sort() 方法用原地算法对数组的元素进行排序,并返回数组。 const array = [11, 2, 8, 10, 1, 5, 3]; //TODO 将array进行升序排序 // 默认排序顺序是在将元素转换为字符串,在排序后等结果; array.sort(); console.log(array); //因此下面字符串排序 是没有问题的 const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); console.log(months); //? 但是 实际排序顺序我们希望是安装数字来排列 //! 那么 就必须给sort方法传入一个比较函数 /** * compareFn(a, b) a 和 b 是原数组中要比较的两个值,同时 原位置 a 在 b 前 * 返回值 排序顺序 > 0 a 在 b 后 < 0 a 在 b 前 === 0 保持 a 和 b 的顺序 */ // array.sort((a, b) => (a > b ? 1 : -1)); // 由于排序的类型 是数字 array.sort((a, b) => a - b); console.log(`output->array`, array); // 降序 // 由于排序的类型 是数字 array.sort((a, b) => b - a); console.log(`output->array`, array); //TODO 对象可以按照某个属性排序: const items = [ { name: 'Edward', value: 21 }, { name: 'Sharpe', value: 37 }, { name: 'And', value: 45 }, { name: 'The', value: -12 }, { name: 'Magnetic', value: 13 }, { name: 'Zeros', value: 37 }, ]; // 按照 name 属性 对数组中的对象进行升序排序 items.sort((a, b) => (a.name > b.name ? 1 : -1)); console.log(items); // 按照 value 对数组中的对象进行升序排序 items.sort((a, b) => a.value - b.value); console.log(items);