js中常用的演算法排序

阿龍丶along發表於2019-01-05

  在工作中都會經常用到的一些基礎演算法,可以很快解決問題.這些都是在工作中總結的,希望可以幫助到大家.

一、陣列亂序

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

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章