【发布时间】:2011-02-24 06:31:17
【问题描述】:
给定以下字符串:
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 循环遍历数组,它会遍历新属性。特别是 input 和 index 属性。使用 hasOwnProperty 似乎没有帮助。
解决方法是根据数组的长度执行for 循环。我仍然想知道是否有人了解 Chrome 为何会这样。 Firefox 和 Safari 没有这个问题。
【问题讨论】:
-
@KennyTM:为什么不
str.split(',');? -
很明显 patrick 这样做是为了从结果数组中的项目中删除空白填充。
-
@Peter:确实,我的评论是针对 KennyTM 的,因为我不知道为什么你会使用正则表达式来仅以逗号分隔。
-
所以听起来
for/in在数组上很糟糕。取点。仍然好奇为什么 Chrome 会尝试迭代input和index。或者他们为什么会在那里。
标签: javascript arrays properties google-chrome split