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