我正在尝试编写一个跨浏览器foreach
方法/函数。应该可以使用数组或对象的真实值或属性的副本或副本来迭代(就像 PHP 一样foreach ($array as &$item)
)。
forEach 和 map 方法都不是跨浏览器兼容的,所以我需要 for 循环。
这个主题JavaScript for...in vs for警告我不要使用for... in
循环数组,但是当我使用以下代码进行测试时:
var arr = [];
arr[3] = "foo";
arr[0] = "bar";
arr["baz"] = "baz";
for (var i in arr) {
alert(i);
}
我得到结果 3、0 和 baz(这是正确的)。这似乎也适用于索引数组(0、1、2)。然而Object.prototype.toString.call(arr) === "[object Array]"
返回真。
那么创建一个 foreach 方法的最佳跨浏览器方法是什么,该方法将迭代数组值和对象属性,理想情况下提供使用数组/对象的实际值/属性的选项?