2021.06.18(工作笔录--关于排序)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.06.18(工作笔录--关于排序)相关的知识,希望对你有一定的参考价值。

JS实现数组排序:升序和降序

 

如果指明了 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;
});

js 数组 map方法

 

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(工作笔录--关于排序)的主要内容,如果未能解决你的问题,请参考以下文章

代码手记笔录——哈希法

linux成长笔录——week_1

2018/12/21 去杭州找工作前的第一次视频面试 java开发工程师 笔录

视频学习笔录---ThinkPHP---案例代码

从零学java笔录-第0篇

请教方丈关于排序码作用