알고리즘 92 - Array.diff

jabae·2021년 11월 2일
0

알고리즘

목록 보기
92/97

Q.

Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.

It should remove all values from list a, which are present in list b keeping their order.

arrayDiff([1,2],[1]) == [2]
If a value is present in b, all of its occurrences must be removed from the other:

arrayDiff([1,2,2,2,3],[2]) == [1,3]

A)

function arrayDiff(a, b) {
  if (b.length < 1)
    return a;
  
  let i = 0;
  let j = 0;
  let result = [];
for (let i of a) {
  let flag = 1;
  for (let j of b) {
    if (i === j)
      flag = 0;
  }
  if (flag === 1)
    result.push(i);
}
  return result;
}

갑자기 c하던 때가 떠올라서 플래그로 풀어보았다.

other

오잉... 하지만 자스는 내장함수로 이렇게나 간단하게 풀 수 있다...! .includes()로 b에 여러 요소가 오더라도 검사해서 필터로 걸러내어 주는 솔루션이다.

function array_diff(a, b) {
  return a.filter(e => !b.includes(e));
}
profile
it's me!:)

0개의 댓글