배열 요소에 포함 된 개체 참조를 다른 인덱스로 교체하고 이전 인덱스를 제거/삭제할 수 있습니까?Javascript는 다른 인덱스에 배열 요소를 교환하고 이전 인덱스를 제거합니다.
예 : I 인덱스 A, B, C와 오브젝트의 배열, D.
는 이제 지수 F와 새로운 배열 요소를 생성하고 그것을 대상물의 기준을 지정할가 해당 인덱스 B 포함. 그 후 배열에서 B를 제거하여 A, C, D, E 만 남기를 원합니다.
은 무엇 기본적으로 내가하고 싶은 E.
에 인덱스 B에 포함 된 객체의 참조를 복사하고 복사 할 수 없습니다 나는 아래의 코드를 시도했지만 작동하지 않습니다
this.cache['A'] = new Orange(1);
this.cache['B'] = new Orange(2);
this.cache['C'] = new Orange(3);
this.cache['D'] = new Orange(4);
// I want to pass the reference B contains
// and assign it to F (like something you can do in C++)
this.cache['E'] = this.cache['B'];
// First attempt
// length of array is 5 (cache['B'] just has value of undefined)
delete this.cache['B'];
// Second attempt
// the reference to object Orange was deleted in both B and E
this.cache.splice('B', 1);
개체에 대한 많은 참조와 바인딩이 있기 때문에 새 개체를 만들고 값을 다시 할당하지 않으므로 전체 복사본을 수행하는 것이 의미가 없습니다.
새로 만든 요소에 잘못된 색인 (예 : [3])으로 액세스하려고했습니다. 배열 요소가 슬라이스 된 후 모든 인덱스가 이동되므로 인덱스 "1"을 삭제하면 "2"에서 "1"로, "3"에서 "2"로 변경됩니다. 나는 연관 어레이와 같은 배열로 작업하려고했는데, 왜 그것이 문제가 있었는지에 대한 것이었다. – peter