Javascript 数组:将条目设置为 undefined

Javascript array: set entry to undefined

本文关键字:设置 undefined 数组 Javascript      更新时间:2023-09-26

>我有整数索引的数组

myarray[1]=val1
myarray[2]=val2
myarray[4]=val3
myarray[5]=val4

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

for (var i in myarray)
{
 console.log(i)
}

输出 1,2,4,5

我喜欢"删除"myarray[2]而不移动其他成员并且删除后 myarray[2] 也变得未定义并且输出应该是1,4,5

myarray.splice(2,1,undefined)了,但它仍然是输出索引 2

停止停止!

第一个问题,虽然是的,js 中的大多数东西都是对象,但不要使用 for in 迭代数组。"为...in"表示对象文字。对数组使用正常的迭代循环。

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

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

myarray[2] = undefined;

编辑:

您不用于的原因...在数组中是这样的:

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

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

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

同样,要将索引设置为 undefined,您不应使用 delete。你可以,但不要。只需做:

myarray[i] = undefined;

希望这有帮助。

使用 delete

delete myarray[2];
delete myArray[2];

使用删除数组索引。

>> myArray[2]
undefined

现在,您不会使用传入循环来迭代它。

此外,for-in 应仅用于迭代对象的属性。在迭代数组时使用常规的 for 循环。