Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cff0f16

Browse files
1 parent 6aa3314 commit cff0f16

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

‎Conversions/ArbitraryBase.js‎

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@
55
* @param {string} baseTwoCharacters Character set for the output base
66
* @returns {string}
77
*/
8-
const convertArbitraryBase = (stringInBaseOne, baseOneCharacters,baseTwoCharacters) => {
9-
if ([stringInBaseOne, baseOneCharacters,baseTwoCharacters].map(arg => typeof arg).some(type => type !== 'string')) {
8+
const convertArbitraryBase = (stringInBaseOne, baseOneCharacterString,baseTwoCharacterString) => {
9+
if ([stringInBaseOne, baseOneCharacterString,baseTwoCharacterString].map(arg => typeof arg).some(type => type !== 'string')) {
1010
throw new TypeError('Only string arguments are allowed')
1111
}
12-
[baseOneCharacters, baseTwoCharacters].forEach(baseString => {
13-
const charactersInBase = [...baseString]
12+
13+
const baseOneCharacters = [...baseOneCharacterString]
14+
const baseTwoCharacters = [...baseTwoCharacterString]
15+
16+
for (const charactersInBase of [baseOneCharacters, baseTwoCharacters]) {
1417
if (charactersInBase.length !== new Set(charactersInBase).size) {
1518
throw new TypeError('Duplicate characters in character set are not allowed')
1619
}
17-
})
20+
}
1821
const reversedStringOneChars = [...stringInBaseOne].reverse()
1922
const stringOneBase = baseOneCharacters.length
2023
let value = 0
@@ -31,11 +34,11 @@ const convertArbitraryBase = (stringInBaseOne, baseOneCharacters, baseTwoCharact
3134
const stringTwoBase = baseTwoCharacters.length
3235
while (value > 0) {
3336
const remainder = value % stringTwoBase
34-
stringInBaseTwo = baseTwoCharacters.charAt(remainder) + stringInBaseTwo
37+
stringInBaseTwo = baseTwoCharacters.at(remainder) + stringInBaseTwo
3538
value /= stringTwoBase
3639
}
37-
const baseTwoZero = baseTwoCharacters.charAt(0)
38-
return stringInBaseTwo.replace(new RegExp(`^${baseTwoZero}+`), '')
40+
const baseTwoZero = baseTwoCharacters.at(0)
41+
return stringInBaseTwo.replace(new RegExp(`^${baseTwoZero}+`,'u'), '')
3942
}
4043

4144
export { convertArbitraryBase }
@@ -48,3 +51,6 @@ export { convertArbitraryBase }
4851

4952
// > convertArbitraryBase('129', '0123456789', '01234567')
5053
// '201'
54+
55+
// > convertArbitraryBase('98', '0123456789', '💝🎸🦄')
56+
// '🎸💝🎸🦄🦄'

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /