搜索价值指数的2D Javascript数组

时间:2015-01-13 12:54:38

标签: javascript jquery arrays multidimensional-array

我正在尝试编写一个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>

7 个答案:

答案 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'。它不包含任何字符串。因此,rowline变量永远不会更改。

您应该将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;
            }
        }
    }

DEMO

注意: -

1)最好在===的地方使用==,它也会检查类型。如您所见,0=='0'给出了真实。

2)最好说i < items.lengthj<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);