【问题标题】:I'm trying to make a search function for a multidimensional array in javascript我正在尝试在 javascript 中为多维数组创建搜索功能
【发布时间】:2013-08-20 02:08:21
【问题描述】:

我正在尝试在 java 脚本中搜索多维数组,但无法正常工作。我想从 3 行之一中输入第一个数字并获取整行。基本上,我希望结果是预热数组中的给定行。如果我输入 20,我希望警报给出 20、0.75、26.9、116、5、2、1、“5x3”。

警报框根本没有给我任何数字,而 chrome 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);

}

【问题讨论】:

  • 定义“它不起作用”,并说明你想要的输出。
  • 为什么只测试嵌套数组的第一个成员?这是故意的吗?此外,您永远不会得到匹配,因为您正在使用 === 将字符串与数字进行比较。
  • 好的,将 === 更改为 == 解决了问题,感谢@CrazyTrain。我以为我只是在比较数字而不是字符串,我不明白为什么会出现问题。
  • @user2606257:输入元素的值始终是字符串。

标签: javascript html arrays search multidimensional-array


【解决方案1】:

您的问题是以下行:

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

=== 运算符检查类型和值是否匹配。在这种情况下,输入的值是一个字符串,而数组中的值是一个整数,所以不匹配。改用 == 就可以了。

【讨论】:

  • 是的,这解决了问题,我只是想知道我的代码中的 hwy DN 被认为是一个字符串。
【解决方案2】:

怎么样:

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;
        }
   }
}

【讨论】:

  • 我希望结果是预热数组中的给定行。如果我输入 20,我希望警报给出 20、0.75、26.9、116、5、2、1、“5x3”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2014-12-05
  • 1970-01-01
相关资源
最近更新 更多