var mergeSimilarItems = function(items1, items2) {
const hash = {}
const ret = []
for(let item of items1) {
hash[item[0]] = item[1]
}
for(let item of items2) {
hash[item[0]] ? hash[item[0]] += item[1] : hash[item[0]] = item[1]
}
for(key in hash) {
ret.push([key, hash[key]])
}
return ret
};
Hash Table을 이용하여 해결하였다.
Hash Table에items1
과items2
가 가지고 있는 프로퍼티들을 기록하는데 중복된value
의weight
는 합쳐주었다.
1.items1
을 순회해서 Hash Table에 기록한다.
2.items2
를 순회해서 Hash Table에 기록한다. 이 때 중복된value
의weight
는 합쳐주었다.
3. Hash Table을 순회해서 결과를 담은 배열ret
에[value, weight]
양식으로 프로퍼티를 추가한다.
var mergeSimilarItems = function(items1, items2) {
const hash = {}
const items = [...items1, ...items2]
for(let item of items) {
hash[item[0]] ? hash[item[0]] += item[1]: hash[item[0]] = item[1]
}
return Object.entries(hash)
};
굳이 for문을 두 번 실행할 필요없이
items1
과items2
를 합친 후 for문을 한 번만 실행한다.
그리고Object.entries
메소드를 사용하면 for...in문 필요없이 쉽게 객체를[key, value]
형식의 2차원 배열로 변환할 수 있다.