• js数组排序


    在JS中,sort方法可用于数组的排序;先来看一个例子:

    var arr = [1, 2, 3, 5, 7, 78, 8, 89];
    arr.sort();
    console.log(arr); // [1, 2, 3, 5, 7, 78, 8, 89]

    代码非常简单,上面得到的结果是从小到大的一个排序,假设要实现从大到小排序呢?这个时候就要借助函数了,见代码:

    var arr = [1, 2, 3, 5, 7, 78, 8, 89];
    arr.sort(function(a, b) {
        return b - a
    });
    console.log(arr); // [89, 78, 8, 7, 5, 3, 2, 1]

    OK,以上的排序方法较为简单,那么还有没有其它的方法来实现排序呢?肯定是有的,冒泡排序这个时候就排上用场了;冒泡排序的原理就是从第一项开始, 依次与数组中所有项(包括它自己)逐个进行比较, 如果当前项(当前项是每次比较之后的最大值)大于下一项, 则交换两者的位置;还是以上面数组为例,我们来用冒泡排序,见代码:

    var sort = function(arr) {
        for (var i = 0; i < arr.length; i++) {
            for (var j = 0; j < arr.length - 1 - i; j++) {
                var temp = 0;
                if (arr[j] > arr[j + 1]) {  
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp
                }
            }
        }
        return arr;
    }
    var arr = [2, 5, 3, 1, 7, 8, 78, 89];
    console.log(sort(arr)); // [1, 2, 3, 5, 7, 8, 78, 89]

    可以看到,得到的是一个从小到大的数组;一维数组的排序很简单,那么二维数组呢?其实原理都一样,排序也非常简单,直接见一个例子:

    假设有这样一个数组:var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']];要求按其ID进行从小到到的排序 ,如何实现呢?见代码:

    方法一,利用sort方法来实现:

    var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']];
    array.sort(function(x, y) {
        a = x[0];
        b = y[0];
        if (a - b > 0) {
            return 1
        } else if (a - b < 0) {
            return -1
        } else {
            return 0
        }
    })
    console.log(array);

    方法二,利用冒泡排序来实现:

    var sort = function(array) {
        for (var i = 0; i < array.length; i++) {
            for (var j = 0; j < array.length - 1 - i; j++) {
                var temp = 0;
                if (array[j][0] > array[j + 1][0]) {
                    temp = array[j][0];
                    array[j][0] = array[j + 1][0];
                    array[j + 1][0] = temp;
                }
            }
        }
        return array
    }
    console.log(sort(array));

    两种方法得到的结果都一样,相对而言,方法一简单一些;

  • 相关阅读:
    基于java对doc文档的分词,导入数据库
    软件架构 软件质量属性(淘宝)
    c/c++ Java python
    阅读架构漫谈心得体会
    关于ubuntu16.4在vmware中打开只显示桌面,桌面闪烁的问题
    暑假总结07
    暑假总结06
    RandomStringUtils
    spring-data-elasticsearch
    Socket和ObjectOutputStream问题
  • 原文地址:https://www.cnblogs.com/jone-chen/p/5589981.html
Copyright © 2020-2023  润新知