2013-08-17 19 views
1

我正試圖在java腳本中搜索多維數組,但是我無法使其工作。我想從3行中的一行輸入第一個數字並獲取整行。基本上,我希望結果是預熱陣列中的給定行。如果我輸入20,我希望警報提供20,0.75,26.9,116,5,2,1,「5x3」。我試圖在javascript中爲多維數組創建搜索函數

警報框根本沒有給我任何數字,鉻的JavaScript控制檯沒有提供任何錯誤。我認爲問題在於我如何處理結果數組。

下面是HTML:

<head> 
<script type="text/javascript" src="arraycode.js"> 
</script> 
</head> 

<body> 
<table> 
<tr><td>Nominal Diameter DN (mm):</td> 
<td><input id="DN" onchange="tablesearch();"></td> 
</table> 


</body> 


</html> 

這裏是JavaScript:

function tablesearch(){ 

var preheat= [[15, 0.5, 21.3, 98, 4, 2, 1, "4x4"], 
      [20, 0.75, 26.9, 116, 5, 2, 1, "5x3"], 
      [25, 1, 33.7, 137, 6, 2, 1, "6x6"]]; 
var DN=document.getElementById("DN").value; 


var result= new Array(); 
for (var i=0; i<preheat.length; i= i+1){ 
    if (preheat[i][0]===DN){ 
     result=preheat[i]; 
     break; 
     } 
} 
alert(result); 

} 
+0

定義「它不起作用」,並陳述你想要的輸出。 – usr2564301

+0

你爲什麼只測試嵌套數組的第一個成員?那是故意的嗎?此外,你永遠不會得到一個匹配,因爲你使用'==='比較字符串與數字。 –

+0

好的改變=== == ==修復了這個問題,謝謝@CrazyTrain。我以爲我只是比較數字而不是字符串,我不明白爲什麼這是問題。 – user2606257

回答

0

你的問題是以下行:

if (preheat[i][0]===DN){ 

===運算符檢查類型是否匹配以及值。在這種情況下,來自輸入的值是一個字符串,而數組中的值是一個整數,因此不匹配。使用==代替它,它會工作。

+0

是這個固定的問題,我只想知道我的代碼中的hwy DN被認爲是一個字符串。 – user2606257

0

如何:

for (var i=0; i<preheat.length; i++){ 
for(var j=0;j<preheat[i].length;j++){ 
    if (preheat[i][j]===DN){ 
     result=preheat[i]; //Are you after the entire array here? 
     break; 
     } 
    } 
} 
+0

我希望結果成爲預熱陣列中的給定行。如果我輸入20我想要警報給20,0.75,26,116,5,2,1,「5x3」 – user2606257