给出以下字符串:
var str = "one,two,three";
Run Code Online (Sandbox Code Playgroud)
如果我在逗号上拆分字符串,我通常会得到一个数组,如预期的那样:
var arr = str.split(/\s*,\s*/);
Run Code Online (Sandbox Code Playgroud)
麻烦的是,在Google Chrome(适用于Mac)中,它会向阵列添加额外的属性.
Chrome调试器的输出:
arr: Array
0: one
1: two
2: three
constructor: function Array()
index: undefined
input: undefined
length: 3
Run Code Online (Sandbox Code Playgroud)
因此,如果我使用循环遍历数组for/in,它将迭代新属性.特别是input和index属性.使用hasOwnProperty似乎没有帮助.
修复方法是for根据数组的长度进行循环.我仍然想知道是否有人深入了解Chrome的行为方式.Firefox和Safari没有这个问题.