2017-06-28 7 views
0

私はJavascriptの新機能です。私は解決策を見つけるのに苦労しています。 私はpatと呼ばれる動的に変化する配列を得ました。配列の要素は座標xとyを持ちます。 これで、すべての要素のすべてのx値をnewArrayという新しい配列に格納するループを使いたいと思います。そして、newArrayが満たされた後、私はそれから最大の価値を得ることを望みます。問題は、私は現在、正しい方法でpush関数を使用するのに苦労しているということです。私のコードは以下の通りです。希望、誰かが助けることができます。君たちありがとう!正しい方法で配列を塗りつぶして最大値を得る

for (i = 0; i < pat.length; i++) { 
    console.log(pat[i].x); 
    var newArray = pat.push[i]; 
    console.log(newArray); 
}; 

答えて

1

使用していることなどのpush

var newArray = []; // create an empty array 

for (var i = 0; i < pat.length; i++) { 
    newArray.push(pat[i].x); // push the x value of the current element to the array 
}; 

var max = Math.max.apply(null, newArray); // calculate the maximum of all x values 

mapを使用して、より機能的なアプローチは次のようになります。

var newArray = pat.map(obj => obj.x); 
var max = Math.max.apply(null, newArray); 

PS:あなたは、配列newArrayを呼び出してもよろしいですか?

編集::私の解決策は、このような最大の計算を計算する:Math.maxは、すべての引数の中で最も高い値を返します。 applyは、配列の要素を引数としてMath.maxを呼び出します。

0

あなたはforループの外側の配列を解読します。そうでない場合は、各繰り返しで再宣言されます。 array literal syntaxvar arrayName = [];を使用して配列を宣言できます。配列に要素を追加するには、arrayName.push(value)メソッドを使用する必要があります。配列内で最大の番号を見つけるには、Mathが必要です。これは、数学的定数と関数のプロパティとメソッドを持つ組み込みオブジェクトです。 我々はそれが我々がapplyメソッドを使用することができますそうするように、それへの引数としてArrayを渡すことができないだけで数をとりながら、それが最大の1 Math.max(a, b, c, d ...)を返し、そこから引数として数字を取り、それらのオブジェクト、からわずかmax方法を必要としますこれはFunction.prototype.apply(から来ます)、与えられたこの値と配列(または配列のようなオブジェクト)として提供される引数で関数を呼び出します。 これは、あなたのケースでMath.max.apply(thisArg, [argumentsAsArray]);またはMath.max.apply(null, newArray);に引数として配列を配置する方法です。

var newArray = []; // create an empty array outside the for loop 
for (i = 0; i < pat.length; i++){ 
    newArray.push(pat[i].x); // add new element to the array 
} 

console.log(newArray); 

var max = Math.max.apply(null, newArray); // take biggest number from the array 
console.log(max); 
+0

これは私の質問に答えるが、コードのみの回答はぶつかる。あなたの答えを説明するために、OPに説明を提供してください。 [回答方法​​](https://stackoverflow.com/help/how-to-answer) – JNYRanger

関連する問題