zoukankan      html  css  js  c++  java
  • js数组对象重排序方法——sort()

    由于在重新复习js的过程中,再一次接触到了js数组对象排序方法之一——sort(),先简单讲一下sort()方法的用法:
    主要用于数组对象的排序,可以升序,也可以降序,但存在一个问题,如下代码:

    var arr = [0, 3, 2, 16, 15, 10];
    arr.sort();
    console.log(arr); //[0, 10, 15, 16, 2, 3]
    

    虽然该方法对数组进行了排序,但返回的数组却并不是按照数值大小进行的排序,因为sort()方法会调用每个数组元素的toString()转型方法将元素转化为字符串进行比较,而字符串比较的是ASCII码进行比较:

    var a = '10';
    var b = '15';
    a.charCodeAt(); // Ascll 49
    b.charCodeAt(); // Ascll 51
    console.log(a < b); //true
    

    所有这种情况并非最佳方案,这个时候就需要给sort()方法添加一个比较函数(compare),原理有点不太懂:

    var arr = [0, 3, 2, 16, 15, 10];
    function compare(a, b) {
        //a位于b之前
        if (a < b) {
            return -1; //升序返回-1 降序返回1
        } else if (a > b) {
            return 1;
        } else {
            return 0;
        }
    }
    arr.sort(compare); //升序
    console.log(arr6); //[0, 2, 3, 10, 15, 16]
    
    var arr = [0, 3, 2, 16, 15, 10];
    function compare(a, b) {
        return a - b; //a-b 升序   b-a 降序
    }
    arr.sort(compare); //升序
    console.log(arr6); //[0, 2, 3, 10, 15, 16]
    
  • 相关阅读:
    JZ36 两个链表的第一个公共结点
    程序员的表达能力
    Git学习(2)-使用Git 代码将本地文件提交到 GitHub
    初识模块
    三元表达式、递归、匿名函数
    CSRF
    XSS前置课程--同源策略
    XSS
    SQL注入基础入门
    Linux下ettercap的安装,make安装软件步骤
  • 原文地址:https://www.cnblogs.com/cqkjxxxx/p/14975559.html
Copyright © 2011-2022 走看看