자바 스크립트의 해시에서 키 + 값을 제거하는 방법
주어진
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key2'] = { Name: 'Object 2' };
myHash['key3'] = { Name: 'Object 3' };
key2
, 및 object 2
해시를 제거 하여 마치 내가 한 것처럼 상태가되도록하는 방법 :
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key3'] = { Name: 'Object 3' };
삭제는 내가 원하는 작업을 수행하지 않습니다.
delete myHash['key2']
간단히 말해 :
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
유일한 워드 프로세서 나에 찾을 수 splice
와 slice
내가없는 정수 인덱서, 처리합니다.
편집 : 또한 'key2'가 반드시 위치 [1]에 있는지도 모릅니다.
최신 정보
OK 약간의 붉은 청어, delete는 표면에서 원하는 작업을 수행하는 것 같지만 json2.js를 사용하여 서버로 다시 밀어 넣기 위해 json에 개체를 문자열 화하고 있습니다.
삭제 후 myHash는 다음과 같이 직렬화됩니다.
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
json2.js의 버그입니까? 아니면 내가 삭제로 잘못하고 있습니까?
감사
당신은 찾고 있습니다 delete
:
delete myhash['key2']
참고 항목 코어 자바 스크립트 가이드
왜 new Array();
해시 를 사용 합니까? new Object()
대신 사용해야 합니다.
그리고 나는 당신이 원하는 것을 얻을 것이라고 생각합니다.
'key2'가 [1] 위치에 있다는 것을 반드시 알 필요는 없다고 말합니다. 글쎄요. 위치 1은 myHash [1]이 차지합니다.
함수와 같이 키 / 값 해시를 허용하는 JavaScript 배열을 남용하고 있습니다. JavaScript가 허용하더라도 연관 배열을 위해 설계된 언어처럼 처리 할 수있는 기능을 제공하지 않습니다. JavaScript의 배열 메서드는 번호가 매겨진 속성에서만 작동합니다.
가장 먼저해야 할 일은 배열이 아닌 객체로 전환하는 것입니다. 여기에서 객체가 아닌 배열을 사용할 이유가 없으므로 사용하지 마십시오. 배열을 사용하려면 요소에 번호를 매기고 해시 개념을 포기하십시오. 배열의 의도는 숫자로 인덱싱 할 수있는 정보를 보유하는 것입니다.
물론 원하는 경우 해시 (객체)를 배열에 넣을 수 있습니다.
myhash[1]={"key1","brightOrangeMonkey"};
다른 옵션은 John Resig 제거 방법 일 수 있습니다 . 필요한 것에 더 잘 맞을 수 있습니다. 배열의 인덱스를 알고 있다면.
참고 URL : https://stackoverflow.com/questions/1385871/how-to-remove-keyvalue-from-hash-in-javascript
'program tip' 카테고리의 다른 글
파일 또는 어셈블리 'Microsoft.Web.Infrastructure, (0) | 2020.10.23 |
---|---|
Laravel과 Eloquent를 사용하여 두 날짜 사이를 쿼리하는 방법은 무엇입니까? (0) | 2020.10.23 |
subprocess.communicate ()에서 스트리밍 입력 읽기 (0) | 2020.10.23 |
건초 더미에서 바늘을 어떻게 찾습니까? (0) | 2020.10.23 |
자바 : 명령 줄에서 jar 파일을 가져 오는 방법 (0) | 2020.10.23 |