在 2D Javascript 数组中搜索值索引
Searching a 2D Javascript Array For Value Index
我正在尝试编写一个jQuery,它将在7x7 2D数组中找到特定值的索引。
因此,如果我正在寻找的值是 0,那么我需要函数来搜索 2D 数组,一旦找到 0,它就会存储两个索引的索引。
这就是我到目前为止所拥有的,但它返回"0 0"(设置为变量的初始值。
这是一个jsFiddle和我到目前为止拥有的功能:
http://jsfiddle.net/31pj8ydz/1/
$(document).ready( function() {
var items = [[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,0,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7]];
var row = 0;
var line = 0;
for (i = 0; i < 7; ++i) {
for (j = 0; i < 7; ++i) {
if (items[i, j] == '0,') {
row = i;
line = j;
}
}
}
$('.text').text(row + ' ' + line);
});
.HTML:
<p class="text"></p>
您的if
语句正在比较
if (items[i, j] == '0,')
访问是错误的,您应该使用 [i][j]
.
并且您的数组具有以下值:
[1,2,3,4,5,6,7]
....
您的值'0,'
是一个字符串,它不会与数组中的数值匹配,这意味着您的行和行不会更改。
首先,您访问数组错误。要访问 2D 数组,请使用格式items[i][j]
。
其次,数组不包含值 '0'
。它不包含任何字符串。因此,row
变量和line
变量永远不会改变。
您应该将 if 语句更改为如下所示:
if(items[i][j] == 0) {
请注意,它搜索的是数字 0,而不是字符串"0"。
您以错误的方式访问数组。请尝试这个:
items[i][j]
当我们有一个多维数组时,我们使用 array[firstDimensionIndex][secondDimensionIndex]...[nthDimensionIndex]
.
话虽如此,您应该更改 if 语句中的条件:
if( items[i][j] === 0 )
请注意,我已经删除了您在 0 之后的,
。不需要。我也删除了''
.我们也不需要它们。
代码中存在以下问题
1)items[i,j]
应该是items[i][j]
。
2)如果您不关心类型,您正在将其与'0,'
应该0
或'0'
进行比较。
3)在你的内部for
循环中,你应该递增j
并测试j
作为退出条件。
像波纹管一样改变你的for
循环,它会起作用
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++) {
if (items[i][j] == '0') {
row = i;
line = j;
}
}
}
演示
注意:-
1)最好在==
的地方使用===
,它也检查类型。正如你所看到的0=='0'
给出的是真的。
2)最好说i < items.length
和j<items[i].length
,而不是硬编码为7。
var foo;
items.forEach(function(arr, i) {
arr.forEach(function(val, j) {
if (!val) { //0 coerces to false
foo = [i, j];
}
}
}
这里 foo 将是 2D 数组中 0 的最后一个实例。
你做错了循环代替
for (i = 0; i < 7; ++i) {
for (j = 0; i < 7; ++i) {
if (items[i, j] == '0,') {
row = i;
line = j;
}
}
}
使用这个
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++) {
if (items[i][j] == 0) {
row = i;
line = j;
}
}
}
这是演示
看起来你还在学习如何编程。但这是我制作的算法。分析它并与您的代码;)进行比较
var itens = [[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,0,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7],
[1,2,3,4,5,6,7]];
var row = null;
var collumn = null;
for (var i = 0; i < itens.length; i++) {
for (var j = 0; j < itens[i].length; j++) {
if (itens[i][j] == 0) {
row = i;
collumn = j;
}
}
}
console.log(row, collumn);
- 在JavaScript中搜索文本并获取其所有开始和结束索引
- 如何有效地搜索具有介于 jquery 之间的索引的 name 属性的输入
- 在 2D Javascript 数组中搜索值索引
- 替代使用搜索或索引
- 索引数组 JavaScript 中索引的搜索值
- ElasticSearch - 从 Javascript 搜索 3 个索引
- 如何通过搜索选择HTML表的行索引
- Javascript:使用多个索引搜索indexeddb
- 用于jqGrid搜索的任意索引(列名)
- 从索引页获取搜索位置缩放到地图页面上的位置
- 如何搜索多个索引(es)相同的值在javascript数组
- 使用javascript搜索有限的手动索引
- 使用数组索引搜索字符串字母
- 如何通过文本搜索返回JSON数组中项目的索引位置?
- 如何在浏览器中高效地为索引搜索散列图像
- 通过选项文本搜索选项索引
- 在javascript中搜索并找到多维数组中字符串的索引
- 如何使用搜索或匹配自动填充拼接(索引开始、结束)
- 在IndexedDB中搜索复合索引
- 在javascript中搜索ajax请求元素的索引