JavaScript를 사용하여 임의의 영숫자 문자열 생성
4882 단어 javascriptwebdevrandom
ID
"를 보내야 했습니다. API는 값이 무엇인지 상관하지 않는 것으로 나타났습니다. 영숫자(a-z, A-Z, 0-9), 정확히 18자 길이여야 하며 아직 시스템에 포함되어 있지 않아야 합니다.그래서 임의의 문자열*을 생성하기로 결정했습니다!
닥치고 코드를 줘!
const randomString = (len = 1) => new Array(len*2).fill(1000).map((x) => Math.ceil(x * Math.random()).toString(36).charAt(0)).filter(Boolean).sort(() => Math.random() - 0.5).map((x,i) => i % 2 === 0 ? x.toUpperCase() : x).join('').substr(0,len)
이제 분해해 보겠습니다!
그 한 줄에 많은 일이 일어나고 있습니다!
먼저, 필요한 것보다 두 배 많은 "문자"를 사용하여
Array
를 만듭니다.그런 다음 배열의 각 항목에 숫자 1000을 지정합니다
fill
.각 항목(
.map()
)에 대해 0과 1 사이에서 무작위로 생성된 숫자를 곱하여 숫자를 무작위화합니다( x * Math.random()
). 그런 다음 두 문자 문자열로 변환됩니다. 첫 번째 문자만 필요하므로 charAt(0)
를 사용하여 잡아봅시다. [0]
를 약어로 사용할 수도 있습니다.이제 우리는 우리가 요청한 것보다 두 배 많은 임의의 영숫자 문자로 구성된 배열을 갖게 되었습니다.
안전을 위해
.filter(Boolean)
를 사용하여 비어 있거나 잘못된 값을 제거합니다. 이렇게 하면 모든 0이 제거되지만 meh 🤷♀️나머지 값은
.sort(() => Math.random() - 0.5)
를 사용하여 새로운 무작위 순서로 섞입니다.그런 다음 새 배열을 다시 반복하고 모든 짝수 인덱스 문자는 대문자로 표시됩니다(가능한 경우 - 0에서 9까지의 숫자는 대문자로 사용할 수 없음).
이제 훨씬 더 많은 임의의 문자 배열이 있지만 이것은
randomString
입니다. 배열이 무슨 소용이 있습니까? 어레이를 함께 join('')
해야 합니다. ''
구분 기호가 필요합니다. 구분 기호가 없으면 문자열은 쉼표로 가득 차게 됩니다.마지막으로 문자열이 우리가 필요로 하는 길이의 두 배라는 것을 기억하십니까? - 문자열의 시작 부분부터 올바른 수의 문자를 반환합니다.
결론
그래서 거기에 있습니다! 나는 그것이 얼마나 잘 수행되는지 모르지만 어쨌든 프로덕션에서 임의의 문자열을 생성해서는 안됩니다! 😬
이것이 아마도 가장 유용한 것은 다음으로 구성된 개별 구성 요소를 가지고 노는 것입니다.
Array.fill()
Array.sort(() => Math.random() - 0.5)
i % 2 === 0
Array.filter(Boolean)
thomas×banks(ツ)의 펜 Generate a random Alphanumeric String using JavaScript 보기(@thomasxbanks )
CodePen .
* 이 문제에 대한 더 나은 해결책은…
const id = btoa(new Date()).substr(0,18);
...하지만 거기에 재미가 어디 있습니까?! 😈
Reference
이 문제에 관하여(JavaScript를 사용하여 임의의 영숫자 문자열 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hryggrbyr/generate-a-random-alphanumeric-string-using-javascript-52nn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)