js工具函數之數組隨機打亂、數組去重、數組並集、數組交集、指定範圍隨機數

1. 數組隨機打亂

function shuffle (arr) {
     var result = [],
         random;
     while (arr.length > 0) {
         random = Math.floor(Math.random() * arr.length);
         result.push(arr[random])
         arr.splice(random, 1)
     }
     return result;
 }
 let num = [1,2,3,4,5,6,7];
 console.log(shuffle(num));

每次都不一樣的 

2.數組去重利用 set數據類型的特性

function unique(arr) {
  if (Array.hasOwnProperty('from')) {
    return Array.from(new Set(arr));
  } else {
    // 兼容不支持set的情況
    var n = {},
      r = [];
    for (var i = 0; i < arr.length; i++) {
      if (!n[arr[i]]) {
        n[arr[i]] = true;
        r.push(arr[i]);
      }
    }
    return r;
  }
}
let numTest = [1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 3, 2, 3];
console.log(unique(numTest))

結果

3. 交集並集

function unique(arr) {
  if (Array.hasOwnProperty('from')) {
    return Array.from(new Set(arr));
  } else {
    var n = {},
      r = [];
    for (var i = 0; i < arr.length; i++) {
      if (!n[arr[i]]) {
        n[arr[i]] = true;
        r.push(arr[i]);
      }
    }
    return r;
  }
}

function union(a, b) {
  // 並集
  var newArr = a.concat(b);
  return unique(newArr);
}

function has(arr, val) {
  // 某數組中是否含有某個值
  return arr.indexOf(val) != -1 ? true : false;
}

function intersect(a, b) {
  // 交集
  let num = []
  a = unique(a); // 取唯一
  for (let o of a) {
    if (has(b, o)) {
      num.push(o);
    }
  }
  return num;
}
let numA = [1, 2, 3, 4, 5, 3, 5];
let numB = [1, 2, 6, 7, 8, 9, 5];
console.log(union(numA, numB)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(intersect(numA, numB)); // [1, 2, 5]

4.  指定範圍隨機數

function random(min, max) {
  return Math.floor(min + Math.random() * ((max + 1) - min))
}
console.log(random(1,9))  // 1-9中的數字

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章