Object.defineProperty(이 SO 답변에서 따옴 Object.defineProperty(取自此SO答案的方法)我们还可以实现该函数作为数组的原型方法,而无需让它出现在诸如 for (i in arr) 之类的循环中。以下代码将允许您调用 arr.shuffle() 来随机排列数组 arr)를 사용하여 함수를 배열 프로토타입으로 구현할 수도 있습니다. for (i in arr)와 같은 루프에 표시되지 않는 메서드입니다. 다음 코드를 사용하면 arr.shuffle()을 호출하여 arr 배열을 섞을 수 있습니다.
Fisher-Yates Shuffle(이 웹사이트에서 가져온 코드)을 사용할 수 있습니다.
으아악Fisher-Yates 셔플링 알고리즘의 최신 버전 을 사용합니다. :
으아악ES2015(ES6) 버전
으아악그러나 구조 분해 스왑 변수를 사용하면 2017년 10월부터 할당으로 인해 심각한 성능 저하가 발생한다는 점에 유의하세요.
사용
으아악프로토타입 구현
Object.defineProperty
(이 SO 답변에서 따옴Object.defineProperty
(取自此SO答案的方法)我们还可以实现该函数作为数组的原型方法,而无需让它出现在诸如for (i in arr)
之类的循环中。以下代码将允许您调用arr.shuffle()
来随机排列数组arr
)를 사용하여 함수를 배열 프로토타입으로 구현할 수도 있습니다.for (i in arr)
와 같은 루프에 표시되지 않는 메서드입니다. 다음 코드를 사용하면arr.shuffle()
을 호출하여arr
배열을 섞을 수 있습니다.