2017-02-03 9 views
1

モジュロ演算子をjavascriptで動作させようとしています。これは、配列内の値を取り込むNodeRed関数です。モジュロ演算子なしで平均値を得ることができます。何も起こりません。誰も助けることができますか? 0~360度を考慮した平均角度を得ることです。モジュロ演算子をjavascriptで動作させようとしています

value1 = {}; 
value2 = {}; 
value3 = {}; 
value4 = {}; 
value5 = {}; 
avg = {}; 


msg.number = msg.payload; 

value1.payload=msg.number[1]; 

value2.payload=msg.number[2]; 

value3.payload=msg.number[3]; 

value4.payload=msg.number[4]; 

avg.payload = (((msg.number[1]+msg.number[2]+msg.number[3]+msg.number[4])/4)%360); 


return avg; 
+0

?あなたがコンソールを見ると、何が壊れているかについてより多くの洞察を得るかもしれません。 – Gavin

+0

は強調のための '%360'の前と後です**または実際のコードですか?また、入力データの例を挙げてください:msg.number [1]は実際に数値ですか?値の範囲は何ですか? – alebianco

答えて

1

モジュール演算子は、2つのオペランドの間の剰余を返します。あなたはあなたの関数となり、平均角度をしたいようだ:

((msg.number[1]+msg.number[2]+msg.number[3]+msg.number[4])/4) 

あなたはまだこれに360の剰余を適用したいならば、あなたは周囲の**を削除して、この必要があります:

avg.payload = ((msg.number[1]+msg.number[2]+msg.number[3]+msg.number[4])/4) % 360; 

しかし、彼らは理論的にはあなたが360に比べて角度の残りをしたい場合は、これを試みることができる360より大きくなりませんので、「%を360」を追加することによって、あなたは、角度の平均値を返すされています

avg.payload = 360 % ((msg.number[1]+msg.number[2]+msg.number[3]+msg.number[4])/4); 

とあなたが望む結果が得られるかどうかを確認してください。

あなたはオペレータ詳細をしたい場合、私はMozillaのJavaScriptを確認したい:

`**%360 **は`これを行うために何を期待されている

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

関連する問題