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中的数字

猜你喜欢

转载自blog.csdn.net/weixin_41229588/article/details/106622146