Javascript数组:将条目设置为undefined

Bar*_*kaD 1 javascript arrays

我有整数索引的数组

myarray[1]=val1
myarray[2]=val2
myarray[4]=val3
myarray[5]=val4
Run Code Online (Sandbox Code Playgroud)

在这种情况下,myarray [0]和myarray [3]未定义,

for (var i in myarray)
{
 console.log(i)
}
Run Code Online (Sandbox Code Playgroud)

输出1,2,4,5

我喜欢在不移动其他成员的情况下“删除” myarray [2],并且删除后myarray [2]也将变得未定义,输出应为1,4,5

我尝试过,myarray.splice(2,1,undefined)但仍输出索引2

Geu*_*uis 5

停停!

第一个问题是,虽然js中的大多数事物都是对象,但是不要使用for in遍历数组。“ for ... in”是针对对象常量的。对数组使用普通的迭代循环。

其次,删除旨在删除对象的属性。同样,数组是对象,但这不是delete的正确用法。

如果要将数组索引的值设置为undefined,只需为其分配undefined。

myarray[2] = undefined;
Run Code Online (Sandbox Code Playgroud)

编辑:

在数组中不使用...的原因是:

var x = [1,2,3];
x.test = 'abc';

for(var i in x){
    console.log(x[i]);
}
//1,2,3,abc

for(var i=0; i<x.length; i++){
   console.log(x[i]);
}
//1,2,3
Run Code Online (Sandbox Code Playgroud)

德米特里(Dmitry)似乎试图做的只是返回具有值的索引。像这样做。

for(var i=0; i<myarray.length; i++){
    if( myarray[i] !== undefined ){
        console.log( myarray[i] );
    }
}
Run Code Online (Sandbox Code Playgroud)

同样,要将索引设置为undefined,则不应使用delete。您可以,但不能。做就是了:

myarray[i] = undefined;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。