2012-07-26 5 views
3

가능한 중복 : 이배열에서 개체를 삭제 하시겠습니까?

그래서, 자바 스크립트, 나는이 설정 한
JavaScript Array Delete Elements

:

global.menu = [{ 
    name: item1, 
    price: price1, 
    message: message1 
}, 
{ 
    name: item2, 
    price: price2, 
    message: message2 
}, 
{ 
    name: item3, 
    price: price3, 
    message: message3 
}]; 

그리고 제 질문은 아주 간단합니다,하지만 난 방법을 삭제할 것 이 배열의 객체입니까?
내가이 명령을 사용하고 개체를 선택하려면 : 그래서

global.HandleMenu = function (b) { 
    var c = menu.filter(function (d) { 
     return d.name == b; 
    }); 
    c.forEach(function (d) { 
     Say(d.message); 
    }); 
}; 

그래. forEach 함수 내에서 삭제 d; 또는 d.remove()를 추가 할 수 있습니까? 또는 나는 무엇인가 놓치고 있냐?

답변

2

사용 필터 및 삭제할 항목의 이름을 가정

global.menu = global.menu.filter(function(a){ return a.item != "be delete" }; 
+0

전체 배열을 삭제하는 것처럼 보이지만 선택한 이름으로 개체를 삭제하면됩니다. –

+0

하나의 항목을 삭제하면 항목을 삭제하지 않고 다른 항목을 선택하는 것과 같습니다. 간단한 목록으로 – blueiur

+0

OHHHHHHH를 사용하는 솔루션입니다. Derp. 나는 실제로 코드를 보았는데 이것이 정확히 내가 찾은 것이기 때문에 고맙다. Derp derp derp. –

3

재 지정은 변수에 작업을해야

for (var i = 0; i = global.menu.length - 1; i--) { 
    var current = global.menu[i]; 
    if (current.name === name) global.menu.splice(i, 1); 
} 

같은, name라고합니다. 참고 null을 테스트하지는 않습니다. 그러나 이것이 일반적인 생각입니다.

+0

이것은 작동하지만 객체의 이름 만 주어지면 객체의 색인을 어떻게 찾을 수 있습니까? –

+0

@ 돌턴 업데이트 – hvgotcodes

+0

이 작동하지만, 위의 대답을 더 좋아, 그것은 간단하고 요점. 그래도 고마워! –

관련 문제