lodash.sampleSize - 需要帮助理解代码

时间:2017-08-31 12:02:49

标签: javascript lodash sample-size

在理解代码时需要你的帮助.. 如果我在我的程序中使用lodash中的sampleSize函数,它的工作正常。但是当我在我的程序中直接使用sampleSize(https://github.com/lodash/lodash/blob/master/sampleSize.js)的代码时,它没有按预期工作。 主要问题是,在该代码中,我们并未将“结果”限制为仅包含“n”个元素。所以'array'的长度和'result'的长度是一样的,这是不正确的。我重写程序以给出预期的结果。但仍然想了解lodash.sampleSize它的工作原理。谢谢!

这是我的代码

sampleSize(array, n) {
        const length = array == null ? 0 : array.length
        if (!length || n < 1) {
            return []
            }
            n = n > length ? length : n
            //console.log("n is",n)
            let index = -1
            //const lastIndex = n - 1
            const result = array.slice()
            while (++index < n) {
                const rand = index + Math.floor(Math.random() * (length - index ))
                //console.log("rand is",rand)
                const value = result[rand]
                result[rand] = result[index]
                result[index] = value
            }
            //console.log("result is",result.slice(0,n))
            return result.slice(0,n)
    }

0 个答案:

没有答案