在工作中都會經常用到的一些基礎演算法,可以很快解決問題.這些都是在工作中總結的,希望可以幫助到大家.
一、陣列亂序
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)
}
}