Javascript 数组:将条目设置为 undefined
Javascript array: set entry to undefined
>我有整数索引的数组
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 循环。
相关文章:
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 如果我们设置undefined的值会发生什么
- 为什么ajax回调在我的本地变量中设置undefined
- app.render[TypeError:无法设置undefined的属性'content']在Node
- jQuery Tablesorter 错误“未捕获的类型错误:无法设置 undefined 的属性'count&
- Javascript 数组:将条目设置为 undefined
- 类型错误:无法在模块导出中设置 undefined 的属性
- Angularjs 绑定到 JSON 会将值设置为 undefined
- GoogleMaps v3 autocomplete.getBounds()在设置后返回undefined
- Jquery ui slider tabs不能设置undefined属性
- jquery-mobile事件顺序和为什么setTimeout设置$this为undefined
- 为什么我不能将NODE_ENV设置为undefined ?
- Angular不能设置undefined属性
- jQuery .val()在设置后立即产生undefined
- 为什么将复选框'的假值设置为'undefined'导致添加ng-invalid
- jQuery多维数组(动态键)-不能设置属性undefined
- 将Audio对象设置为undefined会导致内存泄漏吗?
- “undefined"不是检查表数组上的函数设置侦听器
- 如何处理'undefined'当我在Javascript中为对象设置方法时,从控制台中返回
- JavaScript 无法设置 undefined 的属性