2013-04-10 2 views
1
var myList = []; 
myList.push({ololo: "ololo0"}); 
myList.push({ololo: "ololo1"}); 
myList.push({ololo: "ololo2"}); 
console.log(myList); 

Результат:JS удалить элемент из массива без просветов

[Object { ololo="ololo0"}, Object { ololo="ololo1"}, Object { ololo="ololo2"}] 

Вопрос: Как удалить второй элемент (myList[1]) без просветов, где это было?
это то есть:

myList[0] = {ololo: "ololo0"} 
myList[1] = {ololo: "ololo1"} 
myList[2] = {ololo: "ololo2"} 

Должно быть:

myList[0] = {ololo: "ololo0"} 
myList[1] = {ololo: "ololo2"} 

ответ

2
var myList = []; 
myList.push({ololo: "ololo0"}); 
myList.push({ololo: "ololo1"}); 
myList.push({ololo: "ololo2"}); 
console.log(myList); 

console.log(remove(myList,1)); 


function remove(arr, index){ 
    arr.splice(index,1); 
    return arr; 
} 

Рабочий примерhttp://jsfiddle.net/qzFuj/

+0

Обратите внимание, что он работает в линейном времени - это эквивалентно созданию нового массива и копированию всех элементов в него, опустив удаленный. –

1

Использование splice:

array.splice(index , howMany[, element1[, ...[, elementN]]])

Изменяет содержимое массива, добавляет новые элементы при удалении старых элементов.

Для снятия второго элемента: myList.splice(1, 1).

2

Попробуйте это:

Удалить не трюк. Но Array.splice сделает трюк.

myList.splice (индекс 1)

0

Вот то, что вы ожидаете, и что вы хотите

если вы используете splice он подходит вам

var myList = []; 
myList.push({ololo: "ololo0"}); 
myList.push({ololo: "ololo1"}); 
myList.push({ololo: "ololo2"}); 

    ///////////////////////splice IS APPLIED//////////////////////////// 
    myList.splice(0, 1) 
    /////////////////////////////////////////////////////////////////// 

console.log(myList); 

выход (примечание что индекс 0 полностью удален!)

[Object { ololo= 

"ololo1" 

}, 
Object { ololo= 

"ololo2" 

}] 

если вы используете delete, это не будет вам! вот что это выглядит!

var myList = []; 
    myList.push({ololo: "ololo0"}); 
    myList.push({ololo: "ololo1"}); 
    myList.push({ololo: "ololo2"}); 

    ////////////////DELETE IS APPLIED/////////////////////////////////// 
    delete myList[0] 
//////////////////////////////////////////////////////////////////// 

    console.log(myList); 

выход: (в основном смотреть на неопределенный индекс 0)

[ 

    undefined 

    , Object { ololo= 

    "ololo1" 

    }, Object { ololo= 

    "ololo2" 

    }] 
Смежные вопросы