在 2D Javascript 数组中搜索值索引

问题描述 投票:0回答:7

我正在尝试编写一个 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>
javascript jquery arrays multidimensional-array
7个回答
1
投票

您的

if
陈述正在比较

if (items[i, j] == '0,')

访问错误,应该使用

[i][j]

你的数组有值:

[1,2,3,4,5,6,7]
....

你的值

'0,'
是一个字符串,它不会与数组内的数值匹配,这意味着你的行和行不会改变。


1
投票

首先,您访问数组的方式是错误的。要访问二维数组,请使用格式

items[i][j]

其次,您的数组不包含值

'0'
。它不包含任何字符串。所以
row
line
变量永远不会改变。

您应该将 if 语句更改为如下所示:

if(items[i][j] == 0) {

注意它正在搜索数字 0,而不是字符串“0”。


1
投票

您以错误的方式访问阵列。请尝试一下这个:

items[i][j]

当我们有一个多维数组时,我们使用

array[firstDimensionIndex][secondDimensionIndex]...[nthDimensionIndex]
访问数组的元素。

话虽如此,您应该更改 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'
给出了 true。

2) 最好说

i < items.length
j<items[i].length
而不是将其硬编码为 7。


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 的最后一个实例。


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

这是 演示


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 column = 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;
            column = j;
        }
    }
}

console.log(row, column);
© www.soinside.com 2019 - 2024. All rights reserved.