use*_*716 4 javascript arrays split google-chrome properties
给出以下字符串:
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没有这个问题.
And*_*y E 11
不要使用for...in循环遍历数组!! 这是Javascript(插件)的许多缺陷之一- for...in循环仅用于迭代对象属性.
请使用normal for循环.
for (var i=0, max = arr.length; i < max; i++) { ... }
Run Code Online (Sandbox Code Playgroud)
{DontEnum}属性),因此它们不会在for...in循环中迭代.但是,for...in循环并不打算迭代数组索引.
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |