Closed muf closed 6 years ago
here is code..
function deleteRectangle(container, item){
var idx = findRectangle(container, item)
container[idx].setMap(null)
container.splice(idx,1)
}
function deleteRectangles(container){
for(idx in container){
deleteRectangle(container, container[idx])
}
container = []
because target item is removed by code container.splice(idx,1)
at function deleteRectangle(container, item)
, idx at for(idx in container)
is being weird.. it skips some index values...
** container is global variable here..
now, we know why it works like .. then how to fix it?
** interesting fact for this problem is... that similar code was NAVER's coding test for anwering what will be result like...
테스트 코드
container = ["a","b","c","d"]
function findRectangle(container, item){
for(idx in container){
if(container[idx] == item){
return idx
}
}
return -1
}
function deleteRectangle(container, item){
var idx = findRectangle(container, item)
container.splice(idx,1)
}
function deleteRectangles(container){
for(idx in container){
deleteRectangle(container, container[idx])
}
}
deleteRectangles(container)
테스트 결과 ["a","b","c","d"] => ["b","d"]
이제 이 문제를 해결해보자..
for(idx in container){
deleteRectangle(container, container[idx])
}
여기서의 for 안의 container는 hard copy 해야한다.
Object.assign({}, obj);
함수를 사용하자..
수정된 코드
container = ["a","b","c","d"]
function findRectangle(container, item){
for(idx in container){
if(container[idx] == item){
return idx
}
}
return -1
}
function deleteRectangle(container, item){
var idx = findRectangle(container, item)
container.splice(idx,1)
}
function deleteRectangles(container){
var copy_container = Object.assign({}, container)
for(idx in copy_container){
deleteRectangle(container, copy_container[idx])
}
}
deleteRectangles(container)
결과 : []
프로젝트 코드도 수정해주자
not being deleted all at once..