2014-09-18 2 views
0

이 문구를 어떻게 표현할지는 모르겠지만 (어떤 형태로든 이전에 물어 본 것 같습니다). 내 문제는 기본적으로 (일부 잘못 서면 의사 자바 스크립트 코드를) 다음과 같습니다Javascript : 객체에서 함수 호출시 객체에서 배열을 제거하십시오.

:

var list = [] 
for (i to somenumber) 
    list.push(new myObject); 

list.foreach(function(item){ 
    if (item.name === 'WhatIAmLookingFor') 
     item.delete() <--- This needs to remove the object from list 
} 

그래서 내 놀라운 코드가 호출하여 나는 목록에서 항목을 제거 할 수 있도록하려면에 암시로 함수를 호출합니다.

죄송합니다.이 질문이 무식한 경우 죄송 합니다만이 방법을 알아낼 수 없습니다.

+0

은() 대신 item.delete의 항목을 삭제하십시오. 여기를 참조하십시오 : http://stackoverflow.com/questions/208105/how-to-remove-a-property-from-a-javascript-object. BTW 하나의 Google 검색이 필요했습니다 –

+0

[이] (http://stackoverflow.com/a/11058411)를 의미합니까? – chridam

+1

속임수가 아님 : 주어진 프리미티브가 아닌 특정 속성을 가진 객체를 제거하는 방법을 묻습니다. 'indexOf' 답변은 쓸모가 없습니다. – georg

답변

2

항목을 삭제하는 대신 filter을 사용하여 "양호한"상태로 유지하십시오.

var list = [ 
 
    { name: 'foo' }, 
 
    { name: 'bar' }, 
 
    { name: 'removeMe' }, 
 
    { name: 'baz' } 
 
]; 
 

 
list = list.filter(function(item) { 
 
    return item.name != 'removeMe' 
 
}); 
 

 
document.write(JSON.stringify(list))

"뒤집어"요소를 제거하고, 예를 들어 element.removeFrom(list), 당신은 array.splice이 필요합니다

obj = function(name) { 
 
    
 
    this.name = name; 
 
    
 
    this.removeFrom = function(lst) { 
 
    for (var i = 0; i < lst.length;) { 
 
    \t if (lst[i].name == this.name) 
 
      lst.splice(i, 1); 
 
     else 
 
      i++; 
 
    } 
 
    } 
 
} 
 
    
 
a = new obj('a'); 
 
b = new obj('b'); 
 
c = new obj('c'); 
 
x = new obj('remove'); 
 

 
list = [a, b, c, x, x, a, b, c, x] 
 

 
x.removeFrom(list) 
 

 
document.write(JSON.stringify(list))

+0

개체 범위 내에서이 작업을 수행 할 수 있습니까? 개체 중 하나를 공용 메서드로 호출하여 목록에서 제거하려고합니다. 그러나 그 배열은 그 기능 범위 내에 있지 않을 것이다. – Rabid

+0

@Rabid :'someObj.removeMe (someList)'처럼? – georg

+0

그게 내가 생각하고 있었던거야. 하지만 함수에 매개 변수로 배열을 제공하면 참조 또는 값으로 전달됩니까? 자바 스크립트에서 참조로 전달할 수 있습니까? – Rabid

관련 문제