2015-01-13 46 views
1

我正在嘗試編寫一個jQuery,它將查找7x7二維數組內的特定值的索引。搜索價值指數的2D JavaScript數組

因此,如果我正在查找的值是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

多維索引中的JavaScript是'[] []',即'項目[i] [j]' –

+0

我認爲正確的術語行和collumn,而不是排和行(行==行) –

+0

你也不會增加或檢查內部for循環中的'j'。 –

回答

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.

+0

謝謝!我嘗試修復代碼中的所有錯誤,但頁面變得完全沒有響應。它是++ i,++ j到i ++,j ++的修改 – Mikey

+0

我已經在第三點提到了,如果你看到的話。 – Mritunjay

1

您與wron訪問陣列g方式。請只是試試這個:

items[i][j] 

當我們有一個多維數組,我們訪問數組的元素,使用array[firstDimensionIndex][secondDimensionIndex]...[nthDimensionIndex]

話雖這麼說,你應該改變的情況在你的if語句:

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

請注意,我已經刪除了,你0後有沒有需要它。我也刪除了''。我們也不需要他們。

1

if語句比較

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

訪問是不對的,你應該使用[i][j]

而且你的數組有值:

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

你的價值'0,'是一個字符串,它不會匹配數值數組裏面,也就是說你的行線將不會改變。

0

首先,你正在訪問你的數組錯誤。要訪問2D陣列,請使用items[i][j]格式。其次,您的數組不包含值'0'。它不包含任何字符串。所以rowline變量永遠不會改變。

你應該改變你的if語句是這樣的:

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

注意到它正在搜索數字0,不是字符串「0」。

+0

實際上,它包含值'0' –

+0

@andre第二次看,它確實包含數字0,但它不包含字符串'0',這是OP正在搜索的內容。我確定了我的答案。 – forgivenson

+0

實際上,使用的比較運算符允許將字符串與整數進行比較,除非比較運算符是=== –

0
var foo; 
items.forEach(function(arr, i) { 
    arr.forEach(function(val, j) { 
     if (!val) { //0 coerces to false 
      foo = [i, j]; 
     } 
    } 
} 

這裏foo將是0的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; 
      } 
     } 
    } 

這裏是demo

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