数组去重

数组去重

// 第一种 filter + indexOf
function unique(arr = []) {
    return arr.filter(function (item, index, array) {
        // 当前值的下标与indexOf后的下表不相同,代表存在不止1个
        return array.indexOf(item) === index
    })
}

// 第一种 ES6 Set
function unique(arr) {
    return [...new Set(arr)]
}

数组乱序

// 第一种,每个位置乱序的概率不同
function mixArr(arr = []) {
    return arr.sort(() => {
        return Math.random() - 0.5
    })
}

// 第二种,shuffle 洗牌算法
function shuffle (arr = []) {
    let m = arr.length
    while(m > 1) {
        let index = parseInt(Math.random() * m--);
        [arr[index], arr[m]] = [arr[m], arr[index]]
        // 每次取最后一个数,与剩下的数中的随机一个值交换位置
    }
    return arr
}

数组扁平化

function flatten(arr = []) {
    var result = []
    for (var i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) {
            result = result.concat(flatten(arr[i]))
        } else {
            result.push(arr[i])
        }
    }
    return result
}

数组最大值

// 第一种 reduce
function max(arr) {
  return arr.reduce(function (prev, next) {
    return Math.max(prev, next)
  })
}

// es6
function max(arr) {
  return Math.max(...arr)
}

Last updated

Was this helpful?