JS 세트

leephoter·2020년 12월 31일
0

JavaScript

목록 보기
2/4

재귀

팩토리얼

``

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에서 undefined, null을 제거

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() );

배열 중 랜덤 1개 선택

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;
}

배열1, 배열2 비교 중복 제거

arr1 = [a, b, c, d, e]
arr2 = [b, c]
newArr = arr1.filter(x => !arr2.includes(x));
//newArr = [a, d, e]

배열내의 중복 요소 제거 1 (Set 이용)

const arr1 = [a, b, c, b, a];
const newArr = [...(new Set(배열))];
//newArr = [a, b, c]

배열내의 중복 요소 제거 2 (배열 매서드 이용)

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;
};

⭐️ Date() - 날짜

시간차 계산 1

let Start = new Date();
let End = new Date();
(End - Start); //ms

시간차 계산 2

console.time('variable'); //시작 시간
console.timeEnd('variable'); // 끝 시간
-> (끝 시간) - (시작 시간) ms

시간차 계산 3

let Start = performance.now();
let End = performance.now();
(End - Start); //ms 소숫점 13자리까지
profile
🔥 🧑🏾‍💻 🔥

0개의 댓글