2013-02-11 31 views
5

我在格式2D陣列檢查,如果在2D陣列中存在值

emi_309 | present | weak | 6 
emi_310 | present | strong | 9 
emi_319 | present | medium | 8 
emi_315 | present | weak | 5 

我想用一個簡單的函數

例如,以檢查是否在第一列中存在的值,檢查是否emi_77存在於第一列

我遇到了$.inArray(value, array)但該函數僅適用於1d數組。

是否有二維數組類似

回答

6

是的,如果你做的$.inArray$.map組合:

if ($.inArray(value, $.map(arr, function(v) { return v[0]; })) > -1) { 
    // ... 
} 
+0

完美的解決方案......非常感謝你:) – Kim 2013-02-11 13:36:31

+0

@Kim不客氣:) – VisioN 2013-02-11 13:37:17

1

可以使用$.grep創建新的數組並檢查它的長度

var val='emi_77'; 
if($.grep(twoDarray, function(item){ return item[0]===val; }).length){ 
    /* item exists*/ 
} 

$.grep不會影響原始陣列

API參考:http://api.jquery.com/jQuery.grep/

1

下面是我如何做到這一點,沒有Jquery。

for (var i = 0; i <array.length; i++) { 
     if(array[i][0] == 'emi_77'){ 
      alert("exists"); 
     } 
} 

如果你想進一步,你可以使用下面的功能;

function IsIn2D(str,order,array){ 
    for (var i = 0; i <array.length; i++) { 
     return array[i][order] == str; 
    } 
} 

其中;
陣列是您要搜索
海峽陣列要檢查它是否存在
爲了是字符串的內部陣列

例如,底肥的順序串這對問題的二維數組示例如下:
emi_309 |目前|弱| 6
emi_310 |目前|強| | 9
emi_319 |目前|中等| 8
emi_315 |目前|弱| 5

IsIn2D('emi_77',0,array); /*returns false*/ 
IsIn2D('emi_315',0,array); /*returns true*/ 
0

檢查此方法以從2D數組中搜索。 只需檢查轉換爲字符串並進行比較。

function isArrayItemExists(array , item) { 
    for (var i = 0; i < array.length; i++) { 
     if(JSON.stringify(array[i]) == JSON.stringify(item)){ 
      return true; 
     } 
      } 
      return false; 
}