gpt4 book ai didi

javascript - 从 .split() 生成的 Google Chrome 困惑数组

转载 作者:搜寻专家 更新时间:2023-11-01 04:46:55 24 4
gpt4 key购买 nike

给定以下字符串:

var str = "one,two,three";

如果我用逗号分割字符串,我通常会得到一个数组,如预期的那样:

var arr = str.split(/\s*,\s*/);

问题在于,在 Google Chrome(适用于 Mac)中,它会向数组附加额外的属性。

Chrome 调试器的输出:

arr: Array
0: one
1: two
2: three
constructor: function Array()
index: undefined
input: undefined
length: 3

因此,如果我使用 for/in 循环遍历数组,它将遍历新属性。特别是 inputindex 属性。使用 hasOwnProperty 似乎没有帮助。

解决方法是根据数组的长度执行 for 循环。我仍然想知道是否有人了解 Chrome 为什么会这样。 Firefox 和 Safari 没有这个问题。

最佳答案

不要使用 for...in 循环遍历数组!!这是 Javascript ( plug ) 的众多缺陷之一 - for...in 循环仅用于迭代对象属性。

改用普通的 for 循环。

for (var i=0, max = arr.length; i < max; i++) { ... } 


Firefox 和 Safari 的 ECMAScript/Javascript 引擎使这些特定属性不可枚举( {DontEnum} 属性),因此它们不会在 for...in 循环中迭代.尽管如此, for...in 循环并不是为了遍历数组索引。

关于javascript - 从 .split() 生成的 Google Chrome 困惑数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com