-
[자바스크립트] 딕셔너리는 index가 없다. 그리고 shuffle 함수도 없다.나의 프로젝트/유튜브 프로젝트 2020. 6. 21. 15:52
자바스크립트에서 딕셔너리는 index화 되어있지 않고, 무조건 key 값과 value 값으로 저장이 된다는것을 알았다.
우리가 흔히 아는 배열 array 는 [ ] 형식으로
예를 들어 var array_text = [1, 2, 3, 4, 5] 라고하면
1을 꺼내고싶을때 우리는 array_test[0]으로 사용할 수 있지만,
딕셔너리 형태 { } 이러한 형태는 인덱스가 없다는 것을 알았다.
나는 처음에 딕셔너리를 셔플하려고 하였지만, 인덱스가 없는 딕셔너리 자체는 셔플이 불가능 했다.
예전에 잠깐 파이썬을 배웠을 때에는 shuffle 함수가 기본 내장되어있어 그냥 셔플을 할수 있었지만,
자바스크립트는 또 셔플 함수가 없다!
이게 또 신선한 충격으로 다가왔다.
그래서 이렇게
Array.prototype.shuffle = function () {var length = this.length;// 아래에서 length 후위 감소 연산자를 사용하면서 결국 0이된다.// 프로그래밍에서 0은 false를 의미하기에 0이되면 종료.while (length) {// 랜덤한 배열 index 추출var index = Math.floor((length--) * Math.random());// 배열의 끝에서부터 0번째 아이템을 순차적으로 대입var temp = this[length];// 랜덤한 위치의 값을 맨뒤(this[length])부터 셋팅this[length] = this[index];// 랜덤한 위치에 위에 설정한 temp값 셋팅this[index] = temp;}// 배열을 리턴해준다.return this;};출처 : https://im-first-rate.tistory.com/35
따로 shuffle 함수를 만들어줘야한다........ 정말 예전 함수라는 것이 느껴지는 부분이였다.
사실 저위에 prototype은 또 처음보는 것이라 무엇인지 모르지만,
아직까진 오류가 뜨지 않기 때문에! 그냥 사용하기로 했다.
배열은 셔플이 가능하기 때문에 나는 딕셔너리화 묶어줬던 부분을 다시 그 내장함수로 다시 배열로 만들고 이 배열을 shuffle하기로 했다. !!!
순차적으로 진행이 되는것이기때문에 아무 오류가 없었다.
그리고 현재 보이는 밋밋한 화면은 아직 css를 건들이지 않았기 때문에 밋밋한데,
나는 프론트엔드 백엔드 둘다 잘은 못하지만 그래도 백엔드 부분이 미적감각이 없는 나에겐 편한거 같다.... ㅎㅎ
위 사진은 셔플이 성공하고, 값을 가져오는 것 성공했다는 증거!
이제 순차적으로 새창(or 새 탭)을 열어주고 일정한 시간이 지나면 꺼지고, 다시 또 새 창을 열어주고 이것을 반복해야한다.
지금 문제는 저 자체로 for문을 돌리는데 마지막 부분만 열린다는 것이다.
하나씩 열리고 닫히고, 하나씩 열리고 닫히고를 반복해야하는데 찾아봐야겠다.
'나의 프로젝트 > 유튜브 프로젝트' 카테고리의 다른 글
유튜브 음악 동영상 셔플 (랜덤) 을 사용하기 (1) 2020.07.29 [자바스크립트] 여러개의 딕셔너리를 배열안에 넣기 (마지막 값만 추가가된다?) (1) 2020.06.28 [자바스크립트] 자동으로 켰다 꺼졌다하기 (0) 2020.06.19 [자바스크립트]노래 재생 링크 가져오기 (0) 2020.06.18 동영상 셔플 만들기 프로젝트! (0) 2020.06.15