前端笔试题:随机抽取数组n项元素,返回新数组

92 阅读1分钟

编写一个函数,叫做 sample(arr,n)可以从 arr 中返回 n 项样本。

function sample(arr,n){
    var idxArr = []
    var result = []
    while(result.length != n){
        var idx = parseInt(Math.random()*arr.length); 
        // includes方法判断idxArr是否包含idx
        if (!idxArr.includes(idx)) {
            result.push(arr[idx])
            idxArr.push(idx)
        }
    }
    return result
}

let a = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20]

console.log(sample(a,15));// [17, 18, 10, 13, 2, 7, 4, 1, 5, 10, 20, 8, 20, 4, 15]