检查2D数组中是否存在值

时间:2013-02-11 13:28:11

标签: javascript jquery

我有一个格式为

的二维数组
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数组。

2d数组是否有类似的东西

4 个答案:

答案 0 :(得分:7)

是的,如果您组合使用$.inArray$.map

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

答案 1 :(得分: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/

答案 2 :(得分: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;
  }
}

其中;
  array 是您要搜索的数组   str 是您要检查的字符串是否存在   order 是内部数组中字符串的顺序

例如,通过将其应用于问题的样本2D数组:
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*/

答案 3 :(得分: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;
}