2021.06.18(工作笔录--关于排序)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.06.18(工作笔录--关于排序)相关的知识,希望对你有一定的参考价值。
如果指明了 compareFunction
,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
- 如果
compareFunction(a, b)
小于 0 ,那么 a 会被排列到 b 之前;
- 如果
compareFunction(a, b)
等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
- 如果
compareFunction(a, b)
大于 0 , b 会被排列到 a 之前。 compareFunction(a, b)
必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
function compare(a, b) { if (a < b ) { // 按某种排序标准进行比较, a 小于 b return -1; } if (a > b ) { return 1; } // a must be equal to b return 0; }
要比较数字而非字符串,比较函数可以简单的以 a 减 b,如下的函数将会将数组升序排列
function compareNumbers(a, b) { //升序 return a - b; }
function compareNumbers(a, b) { //降序 return b-a; }
sort
方法可以使用 函数表达式 方便地书写:
var numbers = [4, 2, 5, 1, 3]; numbers.sort(function(a, b) { return a - b; }); console.log(numbers); 也可以写成: var numbers = [4, 2, 5, 1, 3]; numbers.sort((a, b) => a - b); console.log(numbers); // [1, 2, 3, 4, 5]
对象可以按照某个属性排序:
var items = [ { name: \'Edward\', value: 21 }, { name: \'Sharpe\', value: 37 }, { name: \'And\', value: 45 }, { name: \'The\', value: -12 }, { name: \'Magnetic\' }, { name: \'Zeros\', value: 37 } ]; // sort by value items.sort(function (a, b) { return (a.value - b.value) }); // sort by name items.sort(function(a, b) { var nameA = a.name.toUpperCase(); // ignore upper and lowercase var nameB = b.name.toUpperCase(); // ignore upper and lowercase if (nameA < nameB) { return -1; } if (nameA > nameB) { return 1; } // names must be equal return 0; });
map()经常用来遍历数据。
map()的作用就是“映射”,也就是原数组被“映射”成对应新数组。
map() 不会改变原始数组。
var arr = ["a","b","c","d","e"]; arr.map(function(currentValue,index,arr){ console.log("当前元素"+currentValue) console.log("当前索引"+index) console.log("数组对象"+arr) })
map的参数:
currentValue 必须。当前元素的值
index 可选。当期元素的索引值
arr 可选。当期元素属于的数组对象
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
该方法不会改变原数组
const array1 = [22, 3, 31, 12, \'arr\', 19, 31, 56, 43]; const array2 = array1.map((v, i, a) => { return v + 1; }); console.log(array1); // [22, 3, 31, 12, "arr", 19, 31, 56, 43] console.log(array2); // [23, 4, 32, 13, "arr1", 20, 32, 57, 44]
工作实例
<script> var ethnum = [ "eth0", "eth1", "eth10", "eth11", "eth12", "eth13", "eth2", "eth3", "eth4", "eth5", "eth6", "eth7", "eth8", "eth9" ]; var ethnum1 = [], ethnum2 = []; $(ethnum).each(function(i, d){ ethnum1.push(d.substring(3)); }); console.log(ethnum1); //["0", "1", "10", "11", "12", "13", "2", "3", "4", "5", "6", "7", "8", "9"] ethnum1.sort(function(a,b){ return a - b; }) console.log(ethnum1.sort(function(a,b){ return a - b; })); //["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"] ethnum2 = ethnum1.map((v, i, a) =>{ return \'eth\' + v; }); console.log(ethnum2); //["eth0", "eth1", "eth2", "eth3", "eth4", "eth5", "eth6", "eth7", "eth8", "eth9", "eth10", "eth11", "eth12", "eth13"] </script>
2021-06-18 10:50:40
以上是关于2021.06.18(工作笔录--关于排序)的主要内容,如果未能解决你的问题,请参考以下文章