블루스카이(Bluesky) 소셜 추첨기(리포스트, 인용, 좋아요, 답글)를 제작했습니다. :: Pure Ani's Blog > 공지사항

본문 바로가기

블루스카이(Bluesky) 소셜 추첨기(리포스트, 인용, 좋아요, 답글)를 제작했습니다. :: Pure Ani's Blog

페이지 정보

profile_image
작성자 Mandelina
댓글 0건 조회 24회 작성일 25-04-17 12:24

본문

​직접 추첨기 그려본 로또 추첨기의 순서도​​입력받은값 유효성 검사 1.숫자를 6개 입력해야됨2. 중복된 숫자 X3. 1부터 45까지만 입력 ​문자열(배열)로 입력받은 값을 배열의 함수 trim, split, map, find 등의 함수를 이용해서 유효성 검사​​string.trim() -&gt문자열의 앞과 끝의 공백문자를 제거string =&quot 1,2,3,4,5,6 &quot// &quot 1,2,3,4,5,6 string.trim() // 1,2,3,4,5,6​split() -&gt&quot안에들어있는 값 기준으로 문자열을 분리함.우리가 작성하는 로또추첨기의 경우 숫자입력을 콤마(,) 기준으로 입력받기때문에 split(,) 이렇게작성함string ϑ,2,3,4,5,6&quot 추첨기 myNumbers =string.split(,) //myNumbers =[1,2,3,4,5,6]​arr.map() -&gt배열의 전체 요소을 순회하며 함수를 호출, 함수 호출결과를 반환​const myNumbers =string.split(,).map((v) =&gtparseInt(v.trim()));​const myNumbers =string.split(,).map(function(v){ return parseInt(v.trim()); });split으로 분리한 모든 문자열들을 map을 사용해서 다시 숫자형으로 변경map -&gt배열의 전체요소들 하나씩 함수를 실행한 결과를 배열로 반환myNumbers =[1,2,3,4,5,6] -&gtmyNumbers =[1,2,3,4,5,6]​arr.length -&gt배열의 크기반환​Set -&gt중복을 허용하지않는 컬렉션(객체)new Set() : 셋을만듬..size : 셋의 크기를 반환 (.length가 아님에 유의)​if (new Set(myNumber).size 추첨기 !=ϖ) { return alert(중복된 숫자를 입력했습니다.); }myNumber에 들어있는값으로 Set을 생성, 크기를 확인, 크기가 6이 아니라면(작다면) 중복된 값이 있었다는것간단한 예를 들자면, myNumber=[1,1,2,3,4,5]myNumber =new Set(myNumber) //[1,2,3,4,5], 크기 5​arr.find -&gt배열에서 조건에맞는 요소를 찾을때 사용. 마찬가지로 요소전체에대해 함수가 호출됨. 조건에맞는 요소를찾으면 true를 반환하고 탐색중단. 찾지못했으면 undefined 반환 if (myNumbers.find((v) =&gtv &gt45 || v &lt1))myNumbers에 들어있는 요소들에 대해서 45보다 크거나 1보다 작은 추첨기 값을 찾을경우 true를 반환​​1부터 45개의 공을 섞어서 당첨숫자 6개와 보너스 숫자 1개 뽑기Array(45) -&gt45개의 빈배열을 만듬.arr.fill() -&gtarr의 요소들에 undefined를 채움.arr.map(element, index) -&gt요소들에대해 함수호출 , 함수 반환값 저장 ​이때 fill()이 선행되어야되는이유빈 배열에 map()은 실행되지않음. 때문에 fill()로 undefined값을 채우고 map을실행.​arr.splice(index,size) -&gtindex부터 size만큼 배열에서 잘라냄const spliceArray 㷊ndidate.splice(random, 1);random(랜덤으로 뽑은1~45의값)인덱스에 있는 값 1개 제거이때 splice로 잘라진 값은 배열이기 때문에 값을 전달할때 추첨기 주의해야함( const value =spliceArray[0]) 배열이 조금다르게 느껴지는이유가 splice를 사용하면 빈공간은 뒤에있는 배열의 요소들로 다시 채워짐, 즉 배열의 크기가 작아진다, 때문에 while문을 실행할때마다 candidate.length는 1씩작아짐. 이런 부분들이 아직 적응이안된다.arr.push -&gt배열에 값을추가.​Math.random()Math.random은 0~1까지 무작위의 수를 생성함.​0 ≤ Math.random() &lt1 의 범위식을 0≤ Math.random() * 9 &lt9 로 변경 0부터 8.xxxxx까지 무작위로나옴. 이때 Math.floor은 뒤에 소숫점을 날리는 함수.const random =Math.floor(Math.random() 추첨기 * candidate.length);그래서 이코드는 처음엔 0부터44 -&gt0부터 43 -&gt0부터 42 .... 랜덤 인덱스가 뽑아진다.​​고민 했던부분자바스크립트에 대한 고민은아니고 공을 랜덤으로 뽑는알고리즘에 대한 고민이다.코드의 알고리즘이 1부터 45까지숫자를 섞어놓은 배열을 앞에서부터 자르는 방법으로 랜덤한 공을 뽑는방식이다.내가 생각했을때 굳이 1부터45까지 전체적으로 섞어야되나?? 이 생각에서 시작해서 평범하게 생각한 알고리즘은 단순히 1부터 45 숫자가 들어있는 배열에서 랜덤 하게 7번 뽑는것이다. (이러한 기능을하는 메서드가 자바에 추첨기 있었던거같음) 그래서 이렇게 생각한거같음.​최악의 경우엔 random 값이 계속같게나오면 연산횟수가 엄청길어질수있다. splice를 이용해서 추가한 숫자는 삭제를 한다면 아.. 뭐 근데 사실상 처음코드랑 똑같긴하네 ;;​​​공부자료제로초(조현영) | , 재미있는 게임을 만들며 배워보는 JavaScript ???? 이 강의에서는? [사진] JavaScript의 기본 개념을 완벽히 다루고,실습을 통해 배운 내용을 더 쉽게 체화해봐요. JavaScript, 이 강의로 자율학습! [사진] 자바​

댓글목록

등록된 댓글이 없습니다.

Copyright © 2020 ING Global. All Rights Reserved.