2014-10-06 3 views
2

мне нужно найти первый доступный удаленный слот в массивеНайти удаленный элемент в массиве

Это работает:

var A = [1,2] 
A[0] = undefined 
console.log(A.indexOf(undefined)) 

Но как об этом ?:

var A = [1,2] 
delete A[0] 
console.log(A) 
console.log(A.indexOf(null)) ??? 
+2

Похоже на проблему XY. Использование разреженного массива, вероятно, не является правильным решением для вашей проблемы. Какова цель, что вы пытаетесь сделать? – elclanrs

+0

'функция removeFromArray (arr, index) { delete arr [0]; индекс возврата; }; '? – Evgeniy

+0

@elclanrs, 'undefined' отлично подходит для меня, мне было просто любопытно, могу ли я использовать пустые слоты. Также разреженный массив может сэкономить некоторую память при определенных обстоятельствах. – exebook

ответ

2

Переберите массив ищет ключи не присутствуют.

function find_first_empty_slot(arr) { 
    for (var i = 0; i < arr.length; i++) { 
     if (!(i in arr)) { return i; } 
    } 
    return -1; 
} 

Вы не можете найти их с помощью indexOf, потому что он не обращает внимания на отсутствующие элементы. Вы также не можете использовать Array#forEach и т. Д., Потому что они пропускают недостающие элементы.

+0

Я также думаю, что вам нужно посмотреть в массив, если вы хотите сделать это с помощью «пустых слотов», – Balder

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