배열 랜덤 섞기 Shuffle
자바스크립트에서 배열 내의 원소를 무작위로 섞는 예시입니다. Math.random 메서드를 활용하여 배열의 요소들을 순회해야 합니다.
shuffle 함수입니다.
const shuffleArray = array => {
for (let i = 0; i < array.length; i++) {
let j = Math.floor(Math.random() * (i + 1)); // j는 0이상 i이하의 수
[array[i], array[j]] = [array[j], array[i]]; // i번째 요소와 j번째 요소의 값을 변경
}
return array;
};
i번째와 j번째를 바꾸는(swap) 코드는 아래와 같습니다.
const temp = array[i];
array[i] = array[j];
array[j] = temp;
실행결과입니다.
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const shuffleArray = array => {
for (let i = 0; i < array.length; i++) {
let j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
};
shuffleArray(arr);
console.log(arr); // [ 7, 5, 10, 4, 1, 3, 2, 9, 8, 6 ]
console.log(arr); // [ 6, 3, 8, 4, 9, 7, 1, 5, 10, 2 ]
console.log(arr); // [ 10, 2, 8, 1, 5, 6, 9, 7, 4, 3 ]
console.log(arr); // [ 6, 8, 5, 7, 1, 10, 9, 2, 4, 3 ]
console.log(arr); // [ 4, 10, 1, 3, 7, 2, 5, 8, 6, 9 ]
'자바스크립트' 카테고리의 다른 글
[JAVASCRIPT] 구조 분해를 사용하여 변수값 교환하기 (0) | 2021.08.19 |
---|---|
[JAVASCRIPT] 정규식(regExp) - 한글 영어 숫자만 입력받기 (3) | 2020.12.23 |
[JAVASCRIPT] 배열 필터링하는 방법(걸러내기) - filter (0) | 2019.08.10 |
[JAVASCRIPT] 배열 정렬하는 방법(숫자 오름차순/내림차순, 임의정렬) - sort (1) | 2019.08.07 |
[JAVASCRIPT] 배열에 요소 추가하는 방법 - push, unshift (0) | 2019.08.07 |