我正在尝试编写一个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>
答案 0 :(得分:1)
您以错误的方式访问阵列。请试试这个:
items[i][j]
当我们有一个多维数组时,我们使用array[firstDimensionIndex][secondDimensionIndex]...[nthDimensionIndex]
访问数组的元素。
话虽如此,你应该改变你的if语句中的条件:
if( items[i][j] === 0 )
请注意我已删除了您在0之后的,
。不需要。我也删除了''
。我们也不需要它们。
答案 1 :(得分:1)
您的if
声明正在比较
if (items[i, j] == '0,')
访问错误,您应该使用[i][j]
。
你的数组有值:
[1,2,3,4,5,6,7]
....
您的值'0,'
是一个字符串,它与数组中的数值不匹配,这意味着您的行和行不会发生变化。
答案 2 :(得分:0)
首先,您访问的数组是错误的。要访问2D数组,请使用格式items[i][j]
。
其次,您的数组不包含值'0'
。它不包含任何字符串。因此,row
和line
变量永远不会更改。
您应该将if语句更改为:
if(items[i][j] == 0) {
注意它正在搜索数字0,而不是字符串&#39; 0&#39;。
答案 3 :(得分: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.
答案 4 :(得分:0)
var foo;
items.forEach(function(arr, i) {
arr.forEach(function(val, j) {
if (!val) { //0 coerces to false
foo = [i, j];
}
}
}
这里foo将是2D数组中0的最后一个实例。
答案 5 :(得分: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;
}
}
}
以下是demo
答案 6 :(得分:0)
看起来你还在学习如何编程。但这是我制作的算法。分析它并与您的代码进行比较;)
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);