Created
August 22, 2019 14:18
-
-
Save gibo/6ebcdd36cb437a1ec3887f271fd3d20e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ** check for validate parenthesis | |
const isValidParenthesis = str => { | |
let brackets = 0; | |
for (let i = 0; i < str.length; i++) { | |
if (str.charAt(i) === "(") { | |
brackets++; | |
} else if (str.charAt(i) === ")") { | |
brackets--; | |
} else { | |
return false; | |
} | |
} | |
return brackets === 0; | |
}; | |
// ** flatten array | |
const flatten = (arr, result = []) => { | |
arr.forEach(element => { | |
if (Array.isArray(element)) { | |
flatten(element, result); | |
} else { | |
result.push(element); | |
} | |
}); | |
return result; | |
}; | |
// ** random ids | |
const generateRandomId = () => { | |
const getRandomElementFromArray = arr => { | |
return arr[Math.floor(Math.random() * arr.length)]; | |
}; | |
const characters = [ | |
"a", | |
"b", | |
"c", | |
"d", | |
"e", | |
"f", | |
"g", | |
"h", | |
"i", | |
"j", | |
"k", | |
"l", | |
"m", | |
"n", | |
"o", | |
"p", | |
"q", | |
"r", | |
"s", | |
"t", | |
"u", | |
"v", | |
"w", | |
"x", | |
"y", | |
"0", | |
"1", | |
"2", | |
"3", | |
"4", | |
"5", | |
"6", | |
"7", | |
"8", | |
"9" | |
]; | |
const part1 = `${getRandomElementFromArray( | |
characters | |
)}${getRandomElementFromArray(characters)}${getRandomElementFromArray( | |
characters | |
)}`; | |
const part2 = `${getRandomElementFromArray( | |
characters | |
)}${getRandomElementFromArray(characters)}${getRandomElementFromArray( | |
characters | |
)}`; | |
const part3 = `${getRandomElementFromArray( | |
characters | |
)}${getRandomElementFromArray(characters)}${getRandomElementFromArray( | |
characters | |
)}`; | |
return `${part1}-${part2}-${part3}`; | |
}; | |
const arrayUnique = arr => { | |
return arr.filter((item, index) => { | |
return arr.indexOf(item) >= index; | |
}); | |
}; | |
// generate 1000 random ids | |
let ids = []; | |
for (let i = 0; i < 1000; i++) { | |
ids.push(generateRandomId()); | |
} | |
// ids.length === 1000 | |
// find unique ids in 'ids' array but removing all duplicates, arrayUnique(ids).length | |
// find percentage of duplicates | |
console.log((ids.length / arrayUnique(ids).length) * 100); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment