Javascript 寻找未定义值的正确方法是什么
我有以下代码:Javascript 寻找未定义值的正确方法是什么,javascript,arrays,Javascript,Arrays,我有以下代码: if (array.indexOf("undefined")===-1){ do something... } 我的初始阵列是: 数组=[,,,,,] 当程序运行时,它会被值填充,但我希望函数在没有未定义的空格时停止。但上面的语法不正确。任何人都可以告诉我原因。您的代码查找字符串“undefined”。您希望查找包含未定义值的第一个索引。最好的方法是使用findIndex: for(var ind in array) { if(array[ind] === und
if (array.indexOf("undefined")===-1){
do something...
}
我的初始阵列是:
数组=[,,,,,]
当程序运行时,它会被值填充,但我希望函数在没有未定义的空格时停止。但上面的语法不正确。任何人都可以告诉我原因。您的代码查找字符串“undefined”。您希望查找包含
未定义值的第一个索引。最好的方法是使用findIndex
:
for(var ind in array) {
if(array[ind] === undefined) {
doSomething();
}
}
if(array.findIndex(x=>x===undefined) !== -1) {
//do something
}
代码查找字符串“undefined”。您希望查找包含未定义值的第一个索引。最好的方法是使用findIndex
:
if(array.findIndex(x=>x===undefined) !== -1) {
//do something
}
您的检查无效,因为您传递的是字符串“undefined”
,而不是值本身。另外,.indexOf()
设计用于显式忽略阵列中的孔
使用迭代来检测阵列中的漏洞似乎是浪费。相反,您可以使用计数器跟踪已填充的孔数,并在计数器与长度匹配时执行代码
无论哪种方法,在特定索引处检测孔的正确方法是使用in
操作符
下面是一个基于类的重用解决方案:
class SpacesArray扩展数组{
构造函数(n,回调){
超级(n);
this.callback=回调;
这个计数器=0;
}
填充孔(n,val){
如果(!(本节中的n)){
这个.counter++;
控制台日志(“填充孔”,n);
}
这个[n]=val;
if(this.counter==this.length){
这是callback();
}
}
}
//用法
var sa=new SpacesArray(10,函数(){
log(“完成!”+这个);
});
//模拟每个孔的延迟随机填充。
for(设i=0;isa.fillHole(i,i),ms);
}
您的检查无效,因为您传递的是字符串“undefined”
而不是值本身。另外,.indexOf()
设计用于显式忽略阵列中的孔
使用迭代来检测阵列中的漏洞似乎是浪费。相反,您可以使用计数器跟踪已填充的孔数,并在计数器与长度匹配时执行代码
无论哪种方法,在特定索引处检测孔的正确方法是使用in
操作符
下面是一个基于类的重用解决方案:
class SpacesArray扩展数组{
构造函数(n,回调){
超级(n);
this.callback=回调;
这个计数器=0;
}
填充孔(n,val){
如果(!(本节中的n)){
这个.counter++;
控制台日志(“填充孔”,n);
}
这个[n]=val;
if(this.counter==this.length){
这是callback();
}
}
}
//用法
var sa=new SpacesArray(10,函数(){
log(“完成!”+这个);
});
//模拟每个孔的延迟随机填充。
for(设i=0;isa.fillHole(i,i),ms);
}
需要更多信息。你知道最后要填充的空间数吗?它们是按顺序填写的吗?成员定义的空格实际值是未定义的
,还是仅仅是数组中的一个孔?该测试查找字符串“未定义的”
数组.findIndex(函数(x){return x==undefined})
似乎有效当您检查您的条件时,您如何处理数组?这是初始数组var spacesArray=[,,,];。它们随机填充两个不同的值。填充后,数组将赋值为win,并将数组重置为其初始状态。需要更多信息。你知道最后要填充的空间数吗?它们是按顺序填写的吗?成员定义的空格实际值是未定义的
,还是仅仅是数组中的一个孔?该测试查找字符串“未定义的”
数组.findIndex(函数(x){return x==undefined})
似乎有效当您检查您的条件时,您如何处理数组?这是初始数组var spacesArray=[,,,];。它们随机填充两个不同的值。填充后,数组将赋值为win并将数组重置为其初始状态这解决了问题,尽管我对箭头函数还不是很熟悉。所以基本上没有办法用indexOf来寻找一个未定义的值?(实际上我寻找==-1)您可以用函数(x){return x===undefined;}
替换arrow函数。无法使用indexOf
搜索undefined
。您当然可以使用.indexOf
搜索undefined
。在稀疏数组中找不到孔,因为.indexOf
会忽略它们。@Kostis:Using.findIndex()
或查找未定义的
值时,如果数组中实际包含未定义的
值,则会出现误报。这解决了问题,尽管我对箭头函数还不是很熟悉。所以基本上没有办法用indexOf来寻找一个未定义的值?(实际上我寻找==-1)您可以用函数(x){return x===undefined;}
替换arrow函数。无法使用indexOf
搜索undefined
。您当然可以使用.indexOf
搜索undefined
。在稀疏数组中找不到漏洞,因为.indexOf
会忽略它们。@Kostis:如果未定义的值实际包含在数组中,则使用.findIndex()
或查找未定义的值将导致误报。