0

コードを理解するためにあなたの助けが必要です..私のプログラムでlodashのsampleSize関数を使用すると、期待どおりに正常に動作します。しかし、プログラムで sampleSize( https://github.com/lodash/lodash/blob/master/sampleSize.js ) のコードを直接使用すると、期待どおりに動作しません。主な問題は、そのコードでは、「結果」が「n」個の要素のみを持つように制限していないことです。したがって、「配列」の長さと「結果」の長さは同じですが、これは正しくありません。期待される結果が得られるようにプログラムを書き直しましたが、それでも 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)
    }
4

0 に答える 0