在二维 Javascript 数组中搜索值索引
Searching a 2D Javascript Array For Value Index
我正在尝试编写一个 jQuery 来查找 7x7 二维数组中特定值的索引。
因此,如果我要查找的值是 0,那么我需要搜索二维数组的函数,一旦找到 0,它就会存储两个索引的索引。
这是我到目前为止所拥有的,但是它 returns "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>
您访问数组的方式有误。请试试这个:
items[i][j]
当我们有一个多维数组时,我们使用 array[firstDimensionIndex][secondDimensionIndex]...[nthDimensionIndex]
.
访问数组的一个元素
也就是说,您应该更改 if 语句中的条件:
if( items[i][j] === 0 )
请注意,我已经删除了您在 0 之后的 ,
。不需要它。我还删除了 ''
。我们也不需要它们。
你的if
语句比较
if (items[i, j] == '0,')
访问错误,应该使用[i][j]
.
你的数组有以下值:
[1,2,3,4,5,6,7]
....
你的值'0,'
是一个字符串,它不会匹配数组中的数值,这意味着你的行和行不会改变。
首先,您访问数组的方式有误。要访问二维数组,请使用 items[i][j]
.
格式
其次,您的数组不包含值 '0'
。它不包含任何字符串。所以 row
和 line
变量永远不会改变。
您应该将 if 语句更改为如下所示:
if(items[i][j] == 0) {
注意它正在搜索数字 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 将是二维数组中 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
看来您仍在学习如何编程。但这是我制作的算法。分析它并与您的代码进行比较 ;)
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);
我正在尝试编写一个 jQuery 来查找 7x7 二维数组中特定值的索引。
因此,如果我要查找的值是 0,那么我需要搜索二维数组的函数,一旦找到 0,它就会存储两个索引的索引。
这是我到目前为止所拥有的,但是它 returns "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>
您访问数组的方式有误。请试试这个:
items[i][j]
当我们有一个多维数组时,我们使用 array[firstDimensionIndex][secondDimensionIndex]...[nthDimensionIndex]
.
也就是说,您应该更改 if 语句中的条件:
if( items[i][j] === 0 )
请注意,我已经删除了您在 0 之后的 ,
。不需要它。我还删除了 ''
。我们也不需要它们。
你的if
语句比较
if (items[i, j] == '0,')
访问错误,应该使用[i][j]
.
你的数组有以下值:
[1,2,3,4,5,6,7]
....
你的值'0,'
是一个字符串,它不会匹配数组中的数值,这意味着你的行和行不会改变。
首先,您访问数组的方式有误。要访问二维数组,请使用 items[i][j]
.
其次,您的数组不包含值 '0'
。它不包含任何字符串。所以 row
和 line
变量永远不会改变。
您应该将 if 语句更改为如下所示:
if(items[i][j] == 0) {
注意它正在搜索数字 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 将是二维数组中 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
看来您仍在学习如何编程。但这是我制作的算法。分析它并与您的代码进行比较 ;)
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);