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のジェネレータ式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 に答える