zoukankan      html  css  js  c++  java
  • 建议11:增强数组排序的sort功能

      sort方法不仅按字母顺序进行排序,还可以根据其他顺序执行操作.这时就必须为方法提供一个比较函数的参数,该函数要比较两个值,然后返回一个用于说明这两个值得相对顺序的数字.比较函数应该具有两个参数a和b,其返回值如下:

    1. 如果根据自定义评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值
    2. 如果a等于b,就返回0
    3. 如果a大于b,就返回一个大于0的值

      下面的示例中,将根据比较函数来比较数组中每个元素的大小,并按从小到大顺序排序

    function f(a,b){
      return (a-b)
    }
    var a = [4,3,5,6,7,3,6,8]
    a.sort(f)
    console.log(a); //[3, 3, 4, 5, 6, 6, 7, 8]

    如果是从大到小,则让返回值取反就好

    function f(a,b){
      return -(a-b)
    }
    var a = [4,3,5,6,7,3,6,8]
    a.sort(f)
    console.log(a);  //[8, 7, 6, 6, 5, 4, 3, 3]

    (1) 根据奇偶性值排列数组

      sort方法用法比较灵活,但更灵活的是对比较函数的设计.例如:要根据奇偶数顺序排列数组,只需要判断比较函数中两个参数是否为奇偶数,并决定排列顺序

    function f(a,b){
      var a = a%2
      var b = b%2
      if(a==0) return 1
      if(b==0) return -1
    }
    
    
    var a = [3,1,2,4,5,7,6,8,0,9]
    a.sort(f)
    console.log(a);  //[3, 1, 5, 7, 9, 0, 8, 6, 4, 2]

      sort方法在调用比较函数时,将每个元素值传递给比较函数,如果元素值为偶数,则保留其位置不动,如果元素值为奇数,则调换参数a和b的显示顺序,从而实现数组中所有元素执行奇偶排序.

    (2) 不区分大小写排序字符串

    如果不希望区分字母大小,也就是说大写字母和小写字母按相同顺序排列

    function f(a,b){
      var a = a.toLowerCase;
      var b= b.toLowerCase;
      if(a<b){
        return 1
      }else{
        return -1
      }
    }
    var  a = ['aB','Ab','Ba','bA']
    a.sort(f)
    console.log(a);  // ["aB", "Ab", "Ba", "bA"]

    (3) 把浮点数和整数分开排列

    function f(a,b){
      if(a>Math.floor(a)){
        return 1
      }
      if(b>Math.floor(b)){
        return -1
      }
    }
    
    var a  = [3.555,3,2.111,5,7,3]
    a.sort(f)
    console.log(a);  //[3, 5, 7, 3, 2.111, 3.555]
  • 相关阅读:
    javascript数组/对象数组的深浅拷贝问题
    Vue packages version mismatch
    关于Echarts的使用和遇到的问题
    webpack 打包 todolist 应用
    Js正则学习笔记
    Vue项目多域名跨域
    Vuex的简单应用
    css3实现饼状图进度及环形进度条
    浏览器缓存机制
    去除滚动条
  • 原文地址:https://www.cnblogs.com/chorkiu/p/12092771.html
Copyright © 2011-2022 走看看