2015-11-12 51 views
0

我有一個使用變量的簡單方程的,但它似乎作爲字符串合併在一起,而不是計算式如下​​:JavaScript表達式合併,而不是添加變量

var mydimensions = "10x9x8"; 
var splitDimensions = mydimensions.split("x"); 
var lengthDimension = splitDimensions[0]; 
var widthDimension = splitDimensions[1]; 
var depthDimension = splitDimensions[2]; 
var score = 0.25 

var myvalue = (widthDimension * .5) + depthDimension + score; 

//logged value 4.580.25 

然而,如果我嘗試等式沒有變量,它的工作原理如下:

var myvalue = (9 * .5) + 8 + .25; 

//logged value = 12.75 

如何獲得它來計算變量值而不是將其視爲字符串?

+2

確保不關你的變量是一個字符串,特別是檢查'depthDimension'。 – ssube

+0

如果是,我應該如何轉換它們? – Kode

+1

我會推薦'parseFloat',除非你知道它們是整數(然後是'parseInt')。 – ssube

回答

1

你使用什麼瀏覽器?我剛剛在Chrome上試過,並得到了正確的結果12.75

如果你的變量被設置爲字符串,這可能是問題在這裏,將它們轉換爲數值。

你有三個選擇:

  1. 使用功能parseFloat()(或parseInt()整數值)

  2. 的變量之前加上加號,所以不是widthDimension+widthDimension

  3. 使用​​函數,例如Number(widthDimension)(如英鎊射手在評論中指出的)

+0

'Number(widthDimension);'也是一個有效的轉換 –

+1

@SterlingArcher - 更新回答,以反映這一點,謝謝! – isapir

1

如果源代碼是你提供的,既會產生12.75。 如果您有變量不確定值的來源,則可以使用Number()函數將其強制爲一個數字。

0

感謝所有,經過慎重考慮對下游的影響/代碼重用的,我轉換字符串如下爲int的(他們正在返回的字符串不是int):

var mydimensions = "10x9x8"; 
var splitDimensions = mydimensions.split("x"); 
var lengthDimension = parseInt(splitDimensions[0],10); 
var widthDimension = parseInt(splitDimensions[1],10); 
var depthDimension = parseInt(splitDimensions[2],10); 
+0

您應該立即發佈此問題,這顯然是問題所在。 – Chet

+0

道歉,我簡化了這個問題 – Kode

+1

Base 10是parseInt()的默認值,所以不需要在那裏包含「,10」。 – isapir

相關問題