javascript - 비교 - 자바스크립트 배열 삭제




색인을 변경하지 않고 자바 스크립트 배열 스플 라이스 (3)

또 다른 옵션은 배열 대신 자바 스크립트 객체를 사용하는 것입니다.

이 같은:

var users = {};

users[1] = 'user 1';
users[2] = 'user 2';

delete users[1];
alert(users[2]);        // alerts "user 2"
alert(typeof users[1]); // alerts "undefined"

배열 length 속성을 잃어 버리므로 최대 사용자 수를 직접 추적해야합니다.

저는 채팅을하고 배열을 사용하여 사용자를 붙잡고 있습니다. 여기 내 문제가있다 :

User1은 조인하고 밀어 넣기를 통해 배열의 인덱스 0을받습니다. User2는 조인하고 밀어 넣기를 통해 배열의 인덱스 1에 지정됩니다.

User1은 연결을 끊고 스플 라이스를 통해 제거됩니다.

이제 User2는 Index 0이됩니다.

User1은 재 연결하고 푸시를 통해 색인 1이 제공됩니다.

User2의 연결이 끊어지고 Index1이 제거되어 User1이됩니다.

이것은 물론 문제를 일으키는 것입니다.

그래서 내 질문에 어떻게 다른 요소의 인덱스를 변경하지 않고 배열에서 항목을 제거 할 수 있습니까? 내가 잘못 추적하고 있니?


색인 다시 생성 문제없이 배열 요소 제거

    var ind=[1,6]; //index positions of elements to remove
    var arr=['a','b','c','d','e','f','g']; // actual array
    var arr2 = arr.filter(function(item,index){
            if(ind.indexOf(index)== -1){
            return true;
    }});

지금 arr2 ========== >> [ 'a', 'c', 'd', 'e', ​​'f']


splice 대신 delete 를 사용하십시오.

> a = ['1', '2', '3']
< Array [ "1", "2", "3" ]

> delete a[1]
< true

> a
< Array [ "1", undefined × 1, "3" ]

> a.length
< 3




splice