diffArray.js

Codewars 알고리즘 풀이


Problem

  • Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
    • difference 함수를 구현한다.
    • 하나의 list를 다른 list에서 빼고, 그 결과를 반환한다.
  • It should remove all values from list ‘a’, which are present in list ‘b’.
    • list ‘a’에서 list ‘b’의 모든 값을 제거한다.



Solution 01

function diffArray(a, b) {
  let result = [];
  
  for (let i = 0; i < a.length; i++) {
    if (b.indexOf(a[i]) === -1) {
      result.push(a[i]);
    }
  }
  return result;
}

diffArray([1, 2], [1]);  // [2]
diffArray([3, 4], [3]);  // [4]
diffArray([], [1]);      // []
diffArray([1], []);      // [1]


Solution 02

function diffArray(a, b) {
  return a.filter(i => !b.includes(i));
}

diffArray([1, 2], [1]);  // [2]
diffArray([3, 4], [3]);  // [4]
diffArray([], [1]);      // []
diffArray([1], []);      // [1]


Solution 03

function diffArray(a, b) {
  return a.filter(i => b.indexOf(i) === -1);
}

diffArray([1, 2], [1]);  // [2]
diffArray([3, 4], [3]);  // [4]
diffArray([], [1]);      // []
diffArray([1], []);      // [1]