zoukankan      html  css  js  c++  java
  • js中常用的算法排序

      在工作中都会经常用到的一些基础算法,可以很快解决问题.这些都是在工作中总结的,希望可以帮助到大家.

    一、数组乱序

    arr.sort(function randomsort(a, b) {
        return Math.random() > .5 ? -1 : 1; 
    });

      function randomSort(a){
        var arr = a,
       random = [],
       len = arr.length;
         for (var i = 0; i < len; i++) {
          var index = Math.floor(Math.random()*(len - i));
          random.push(a[index]);
          arr.splice(index,1);
        }
        return random;
      }

    二、数组排序

    常用与价格排序
    let newArr = [
      {"name": "along","price":"20"},{"name": "along","price":"50"},{"name": "along","price":"40"}
    ]
    newArr.sort(function(a, b) { 
    return a.price - b.price; //小到大 /b
    .price - a.price 大到小
    });

    三、取最小值或者最大值

    Minarr(arr){
      return Math.min(...arr); //取最小值
    }

    Maxarr(arr){
      return Math.max(...arr); //取最大值
    }

    四、数组值为对象去重

    1.

    setArr (arr) {
      var result = [];
      var obj = {};
      for(var i =0; i<arr.length; i++){
        if(!obj[arr[i].id]){
          result.push(arr[i]);
          obj[arr[i].id] = true;
        }
      }
      return result;
    }

    2.

    function obj2key(obj, keys) {
      var n = keys.length,
      key = [];
      while (n--) {
        key.push(obj[keys[n]]);
      }
      return key.join('|');
    }
    function uniqeByKeys(array, keys) {
      var arr = [];
      var hash = {};
      for (var i = 0, j = array.length; i < j; i++) {
        var k = obj2key(array[i], keys);
        if (!(k in hash)) {
          hash[k] = true;
          arr .push(array[i]);
        }
      }
      return arr;
    }
    newArr = uniqeByKeys(newArr, ['video_pic']);  //newArr:去重数组  video_pic:去重value

    五、查找元素在数组中位置

    function indexOf(arr, item) {
      if (Array.prototype.indexOf){ //判断当前浏览器是否支持
        return arr.indexOf(item);
      } else {
        for (var i = 0; i < arr.length; i++){
          if (arr[i] === item){
            return i;
          }
        }
      }
      return -1; //总是把return -1暴漏在最外层
    }

    六、递归

    function factorialize(num){
      if(num < 0){
        return -1;
      }
      if(num === 0 || num === 1){
        return 1;
      }
      if(num >1){
        return num * factorialize(num-1)
      }
    }

      

  • 相关阅读:
    【抓包知识】01_tcpdump安装及使用
    【jmeter知识】03_jmeter接口报Read timed out +ng日志499分析
    【nginx知识】01_nginx日志请求到达时间$time_local、请求处理时间request_time
    【研发过程质量分析可视化】剩余需求实现(数据处理、数据可视化)
    【研发过程质量分析可视化】需求1(获取待分析缺陷清单)实现
    【研发过程质量分析可视化】需求文档
    【jmeter知识】01_接口响应时间(Connect Time、Latency、Sample Time)
    【python解题笔记20210318】CodeWars:RGB To Hex Conversion
    生成MD5加密
    StringBuilder--拼接Sql语句防Sql注入
  • 原文地址:https://www.cnblogs.com/alongup/p/10226505.html
Copyright © 2011-2022 走看看