从数组中删除项目,为什么输出中的 for 和 for 不同
Delete item from array , why for and for in output are different?
var arr = ["a", "b", "c",null,undefined];
delete arr[0];
for (var i = 0,j=arr.length; i < j; i++) {
console.log(arr[i]);
/*
undefined
b
c
null
undefined
*/
}
for (var o in arr) {
console.log(arr[o]);
/*
b
c
null
undefined
*/
}
谁能告诉我为什么输出不同?
您可以通过密钥访问;
数组索引是数组对象的键
使用删除关键字,删除对象键因为
delete arr[0]; // key "0" deleted!
还行?
并看到这个
var arr = ["a", "b", "c",null,undefined];
delete arr[0]; // key "0" deleted!
// access by i, with key : 0
for (var i = 0,j=arr.length; i < j; i++) {
console.log(i);
/*
0
1
2
3
4
*/
}
// access by object key, without key : 0
for (var o in arr) {
console.log(o);
/*
1
2
3
4
*/
}
祝你好运!
实际上delete
不会从数组中删除元素,它只会将元素设置为未定义,要从数组中删除项目,请使用如下splice
var arr = ["a", "b", "c",null,undefined];
arr.splice(0, 1);
现在你的数组如下
["b", "c", null, undefined]
但是您使用delete
从数组中删除第一项,如下所示
delete arr[0];
之后,您的数组如下所示
[undefined × 1, "b", "c", null, undefined]
所以,在你的第一个循环中,你使用了
for (var i = 0,j=arr.length; i < j; i++) {
console.log(arr[i]);
}
它使用数组的索引迭代数组,因此(第一次在循环中(arr[i]
表示arr[0]
哪个是undefined
的,并且在第二个循环中使用
for (var o in arr) {
console.log(arr[o]);
}
这实际上是与对象一起使用的理想选择 循环 但你用了一个数组,嗯,我认为它还应该显示数组的其他属性,真的很困惑你怎么只得到这些(b c null undefined)
值,除非你使用hasOwnProperty
for (var o in arr) {
if(arr.hasOwnProperty(o)) console.log(arr[o]);
}
无论如何,它迭代对象的所有可用属性,不应与数组一起使用。检查此小提琴以了解hasOwnProperty
的工作原理以及使用 for in
迭代array
时不使用此方法时应该获得什么。
给定一个空数组array = []
,array[0]
返回undefined
,以防没有项存储在位置0。删除arr[0]
后,那里没有数据。循环 for .. in ..
迭代数组中的所有元素,因此它返回 b c null undefined
。更具体地说,for .. in ..
循环对象中的属性。因此,如果您将一个新属性(例如name
(分配给arr
,arr.name = "an array"
,则应for .. in ..
循环中打印。
相关文章:
- jQuery:循环一个具有不同超时值的循环
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 为什么 Object.keys() 和 for ..在不同的
- 从数组中删除项目,为什么输出中的 for 和 for 不同
- 如何动态使用for循环,将具有不同参数的函数推送到数组中
- 在Javascript中的for循环中运行不同的api
- 如何在 p5.js 中将 For 循环的文本输出替换为不同的值
- 需要解释:用于时输出不同.in and for(;;) in JavaScript.
- 具有不同输入值的 for 循环
- 在双for循环中向不同对象添加项-Javascript
- 有人能解释为什么FOR和WHILE循环在Javascript中有不同的输出
- 为什么相同的for循环不同的时间
- 如何使用for循环创建具有不同值的按钮
- 这些for循环不同吗?
- 排序函数在放入for循环中时表现不同
- 什么可能导致HTML和脚本在for循环的迭代中表现不同
- 如何创建一个for循环来遍历不同的函数而不重复执行同一个函数
- 使$.getJSON立即与for不同
- JS:如何在具有不同 #ids 的 for 循环中打印元素
- 我可以在JavaScript中的不同for循环中两次声明同一个变量吗