``
function factorial(x) { if (x<0) return; if (x===0) return 1; return x * factorial(x-1); }
factorial(3); // -> 6 (321)
## ⭐️ Math.random() - 랜덤
### 범위 내 랜덤 정수
>
```js
function randomRangeInteger(min: number, max: number) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function randomRangeRealNumber(min: number, max: number) {
return Math.random() * (max - min) + min;
}
array.filter(function (a) { return !!a });
Array(5).fill().map(function(each, index) { return index + 1 }) -> [1, 2, 3, 4, 5]
array.sort( () => 0.5 - Math.random() );
array[Math.floor(Math.random() * array.length)]
function randompick(num, array) { //num:배열길이, array:원시배열 var newarray = []; var example = []; for (var i = 0; i < num; i++) { example.push(array[Math.floor(Math.random() * array.length)]); while (newarray.includes(example[example.length - 1])) { example.pop(); example.push(array[Math.floor(Math.random() * array.length)]); } newarray.push(example[example.length - 1]); } return newarray; }
arr1 = [a, b, c, d, e] arr2 = [b, c] newArr = arr1.filter(x => !arr2.includes(x)); //newArr = [a, d, e]
const arr1 = [a, b, c, b, a]; const newArr = [...(new Set(배열))]; //newArr = [a, b, c]
const arr1 = [a, b, c, b, a]; const arr2 = arr1.filter((el, idx) => arr1.indexOf(el) === idx); //newArr = [a, b, c]
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
const equals = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
equals(arr1, arr2); // true
const arr1 = [1, 2, 3];
const arr2 = [2, 1, 3];
arr1.sort();
arr2.sort();
const equals = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
equals(arr1, arr2); // true
sample 배열이 base 배열의 부분집합인지 확인
export const isSubsetOf = (base: string[], sample: string[]) => {
if (sample.length > base.length) return false;
base.sort();
sample.sort();
// number[] 일 경우 (꼭 안 해도 됨)
// base.sort((a, b) => a - b);
// sample.sort((a, b) => a - b);
const findItemInSortedArr = (item: string, arr: typeof base, from: number) => {
for (let i = from; i < arr.length; i++) {
if (item === arr[i]) return i;
else if (item < arr[i]) return -1;
}
return -1;
};
let baseIdx = 0;
for (let i = 0; i < sample.length; i++) {
baseIdx = findItemInSortedArr(sample[i], base, baseIdx);
if (baseIdx === -1) {
return false;
}
}
return true;
};
let Start = new Date(); let End = new Date(); (End - Start); //ms
console.time('variable'); //시작 시간 console.timeEnd('variable'); // 끝 시간 -> (끝 시간) - (시작 시간) ms
let Start = performance.now(); let End = performance.now(); (End - Start); //ms 소숫점 13자리까지