js中常用的算法排序

时间:2023-03-08 15:35:11

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

一、数组乱序

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)
  }
}