2015-11-06 14 views
0

如果在数组中添加和删除条目(不是推送/弹出),扫描和查找第一个未定义元素的最佳方式是什么,以便可以使用新值设置它?如何在javascript中找到第一个未定义的数组元素来填充它?

+0

在插入期间检查'undefined'-_- ..然后你可以住'undefined'自由生活 –

+0

你可以显示数组看起来像什么 – RRP

+0

相关:如何知道数组是否有任何已定义的元素? (任何未定义的) – Todd

回答

0

我想最简单的方法是使用Array.indexOf找到第一个undefined元素的索引。

+0

'indexOf'忽略漏洞。所以不行。 – amc

+0

不是一个好的答案 – HDJEMAI

0

假设我们阵列上执行之前没有操作的知识,最快的方法是简单地通过整个阵列的迭代线性

var arr = [1, 2, , 4]; 

for (var i = 0; i < arr.length; i++) { 
    if (typeof arr[i] === 'undefined') { 
    arr[i] = 'foo'; 
    break; 
    } 
} 

或者,我们可以跟踪什么用这样的事情被删除

var earliestRemoved; 

if (newRemoved < earliestRemoved || !earliestRemoved) { 
    earliestRemoved = newRemoved; 
} 
1

如果数组包含findIndex孔,你可以找到的第一个像这样:

[1, 2,, 4, 5].findIndex(Object.is.bind(null, undefined)) 

indexOf将忽略漏洞。所以

[1, 2,, 4, 5].indexOf(undefined) 

总是返回-1

+0

我测试了这个长度为4的数组,但只有'undefined'值作为内容,在这种情况下它不工作,例如使用'new Array(4)'创建的数组。 (在一个角度5的演示应用程序中测试) – HDJEMAI

相关问题