2017-02-03 48 views
1

試圖讓模操作符在javascript中工作。這是一個NodeRed函數,它接受數組中的值。我可以在沒有模運算符的情況下獲得平均值,但沒有任何反應。誰能幫忙?這樣做的關鍵是讓AVG的角度考慮正確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

'** 360%**'這是什麼期待呢?如果您查看控制檯,您可能會更深入地瞭解什麼是中斷。 – Gavin

+0

是在'%360'之前和之後的強調,還是它是實際的代碼?另外,請給出輸入數據的例子:msg.number [1]實際上是一個數字?什麼是價值範圍? – alebianco

回答

1

模塊運算符返回師的兩個操作數之間的剩餘部分。這似乎是你想要的平均角度這將是你的函數:

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

如果你仍然想申請360的模本,您應該刪除周圍** **和有這樣的:

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

但加入「360%」你是因爲他們在理論上返回角度的平均值。如果你想要的角度的剩餘部分相比,360你可以試試這個不會比360更大

,看看你是否得到你想要的結果。

如果您想對運營商我會檢討Mozilla的JavaScript的更多信息:

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