2014-10-24 3 views
2

자바 스크립트 세트의 색인이 생성되는지 잘 모르겠습니다. 다른 프로그래밍 언어에 대한 경험으로 볼 때 보통 인덱싱되지 않습니다. JS에서 새로운 세트를 작성하여 점검하고 몇 가지 값을 추가했습니다. 그런 다음 색인 0과 1 값을 요청했지만 undefined을 반환 했으므로 색인이 생성되지 않았다고 가정합니다.세트의 오브젝트 제거 자바 스크립트

JS에서 집합에서 개체를 어떻게 제거합니까?

예는 :

var data = new Set(); 
    data.add({"val1" : [1,2,3]}); 
    data.add({"val2" : [4,5,6]}); 
    data.add({"val3" : [7,8,9]}); 

나는 data.has({"val1" : [1,2,3]})으로 확인하지만 내가 코드의 라인은 같은 객체를 참조하지 않는 가정입니다 false를 반환.

+2

당신은 정확합니다 - 그 같은 참조가 아닙니다. 그것을 저장하거나 고유 한 키로'Map'을 사용해야합니다. –

+0

먼저 삭제할 객체를 검색 한 다음 data.delete()를 사용하십시오. – kevin628

+4

어떤'Set' 라이브러리를 사용하고 있습니까? ES6? polyfill? 제 3 자 라이브러리? 객체를 값으로 지원하는'Set' 라이브러리에서, Set에서 찾을 때 정확한 객체 (정확히 같은 객체가 아닌)를 제공해야합니다. 같은 속성을 가진 객체를 찾지 않습니다. 정확히 동일한 객체 참조를 찾습니다 (예 :'==='. – jfriend00

답변

1

배열로 변환하여 다음과 같은 색인을 사용하여 제거 할 수 있습니다.

var data = new Set(); 
data.add({"val1" : [1,2,3]}); 
data.add({"val2" : [4,5,6]}); 
data.add({"val3" : [7,8,9]}); 

alert(data.size === 3); //true 

data.delete([...data][1]); //Remove the middle object 

alert(data.size === 2); //true 

ES6 여기에 있습니다.

http://www.es6fiddle.net/i1nxqwm0/

세트에 대한 계정에 호환성 표를 확인하시기 바랍니다. 이 도움이

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set

희망.

관련 문제