2014-10-06 89 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 2014-10-06 07:25:12

+0

'function removeFromArray(arr,index){ delete arr [0]; 回報指數; };'? – Evgeniy 2014-10-06 07:30:11

+0

@elclanrs,'undefined'對我來說很好,我只是好奇我是否也可以使用空插槽。在特定情況下,稀疏數組也可以保存一些內存。 – exebook 2014-10-06 07:49:17

回答

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 2014-10-06 07:35:29