3

可能重复:
基本阵列构造的功能方法

我是 js 新手。我只想知道哪种方法是正确的。下面我发布了我的代码。

var doubles = (i*20 for (i in it));
var doubles ={i*20 for (i in it)};

谢谢

4

4 回答 4

4

遍历数组时应该使用普通的 for循环。for...in用于迭代对象属性。

所以,正确的做法是:

for (var i = 0; i < array.length; ++i) {
    // do something
}

迭代对象属性:

for (var prop in obj) {
     // do something with prop
}
于 2012-11-11T13:52:01.577 回答
2

假设it是一个数组,您可以使用.map()

var doubles = it.map(function(i){ return i*20; });

此外,您可能想看看如何在 JavaScript 中编写列表/数组推导式


假设您想使用 Mozilla 的Generator 表达式(其中it是现有的Iterator),您需要使用方括号:

var twentyfolds = [i*20 for (i in it)];
于 2012-11-11T13:52:46.427 回答
1

为了将来参考,ECMAScript 6(又名 Harmony)很可能会引入一种新的、健全的迭代对象(包括数组)的方法

for(var x of array) {
    // do something with x
}

它还将向核心语言引入数组理解生成器表达式:

var arr = [1, 2, 3];
console.log([i*20 for (i of arr)])
于 2012-11-11T14:49:27.193 回答
0

这两个选项都是语法错误。如果 'it' 是一个列表,那么您可以使用 for 循环或 forEach 方法遍历它。但是,在您的情况下,您似乎真的在寻找 map 方法。

var doubles = it.map(function (i) { return i * 20; });
于 2012-11-11T13:54:54.203 回答