我可以用"map"代替"for each"/"for in"吗?

Joh*_*Mee 4 javascript arrays loops

有一段时间了,现在javascript有"map"函数来遍历数组.

似乎可以将它用作'foreach'运算符,例如:

fruitbowl.map(function(fruit){ 
                  ... do stuff with fruit
              })
Run Code Online (Sandbox Code Playgroud)

这是好还是坏比说

for(var i in fruitbowl){ 
     ... do stuff with fruitbowl[i] 
}
Run Code Online (Sandbox Code Playgroud)

保存必须使用索引但添加回调; 它似乎并不常见所以我犹豫使用但仍然想要.

CMS*_*CMS 7

你提到的三种方法有不同的用途.

Array.prototype.map方法的目的是创建一个新数组,其结果是在每个数组元素上调用回调函数.

Array.prototype.forEach方法的目的是迭代数组,每个数组元素执行一次提供的回调函数.

for...in语句的目的是枚举对象属性.

我认为,for...in声明应避免穿过任何类似数组的1名对象,其中真正的目的是遍历了数字指标,而不是列举的对象属性(甚至不知道这些指标是性能).

避免for...in迭代类似数组的对象的原因:

  • 除了数组元素之外,还要迭代继承的用户定义属性,如果使用像MooTools这样扩展Array.prototype对象的库,您将看到所有这些扩展属性.
  • 迭代的顺序是任意的,可能不会按数字顺序访问元素.

看看这篇文章:


1类似数组的对象我指的是包含连续数字属性和length属性的任何对象