본문 바로가기
2. 우당탕탕 개발자/2-1. 공부기록

16Dec2019 TIL

by Little Monkey 2019. 12. 17.
반응형

Today I learned :

  • Realized why I would use JSON.stringify()

 


더보기

오늘의 푸념생각:

베트남은 모든 것이 참 옛날 같다^^!
가끔 아니, 자주 내가 쌍팔년도에 있는 건지, 2020년을 앞두고 있는건지 가늠이 안 되는 때가 많다.

오늘도 참을 인을 세 번 새기며... ^^........ 맥주를 3캔을 마셨다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

쑤뚜례쑤...... 진짜...... !! 여기 와서 진짜 별 말도 안 되는 일들을 마주하니... 하... ^^ 

오히려 얌전하게 앉아 컴퓨터 코드와 씨름할 때가 오히려 스트레스가 해소되는 때다.

맥주 마시면서 코딩 문제 푸는 게 세상에서 제일 맘 편하다... 제일 편해 (진심임)

 

오늘은 내 스트레스가 절정이니, 어제처럼 코드로 한 바닥을 채우려 한다.

 


Array.prototype.isSubsetOf() 구현하기

let arr = ['alice', ['cat'], { name : 'chuck' }]
arr.isSubsetOf(['alice', 'bob', ['cat'], { name : 'chuck' }])	// true

let arr1 = ['alice', ['cat'], { name : 'chuck' }]
arr1.isSubsetOf(['alice', 'cat', ['chuck']])	//false

본 예제를 보면 알겠지만, 

array1.isSubseOf(array2) === true 반환하기 위해선, array1의 모든 요소가 array2에 포함되어 있어야 한다.

 

단순 string이나 number의 경우, 해당 매소드를 구현하기가 쉽지만

array의 element 가 array 이거나 object 일 경우, 해당 메서드를 구현하기 쉽지 않다.

 

왜냐면,

// array equality check
[ 'cat', 1, 'pig'] === [ 'cat', 1, 'pig' ] 	//false

// object equality check
let obj1 = { kind : 'monkey' } 
let obj2 = { kind : 'monkey' }
obj1 === obj2	//false

 

array와 object는 겉모습은 같아도 서로가 같냐는 연산에 false를 리턴한다. 

 

이때, element의 array와 object를 JSON화 하여 모든 element가 같은지 여부를 체크해주면 된다. 

=> 단순 겉모습이 같은지 다른지 비교할 때 JSON을 쓰면 참 편리하다!

(이게 진짜 그렇게 쓰이는지는 잘 모르겠다. 언제나 그렇듯.. 난 초보니까 판단은 각자...)

 

Array.prototype.isSubsetOf = function(array) {
  let arr = this.map(a => {
    if (typeof a === "object") return JSON.stringify(a);
    else return a;
  });

  array = array.map(a => {
    if (typeof a === "object") return JSON.stringify(a);
    else return a;
  });

  let sum = 0;
  let length = arr.length;

  for (let el of arr) {
    array.indexOf(el) !== -1 ? sum++ : sum;
  }
  return sum === length ? true : false;
};
반응형

'2. 우당탕탕 개발자 > 2-1. 공부기록' 카테고리의 다른 글

18Dec2019 TIL  (0) 2019.12.19
17Dec2019 TIL  (0) 2019.12.18
15Dec2019 TIL  (0) 2019.12.15
14Dec2019 TIL  (0) 2019.12.14
13Dec2019 TIL  (0) 2019.12.14

댓글