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 |
댓글