检查值是否存在于二维数组中。

6

I have a 2d array in the format

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),但是这个函数只适用于1维数组。

是否有类似于2D数组的东西?

4个回答

7

是的,如果你结合使用$.inArray$.map

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

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

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

例如,将其应用于问题的示例2D数组:
emi_309 | present | weak | 6
emi_310 | present | strong | 9
emi_319 | present | medium | 8
emi_315 | present | weak | 5

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

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/


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接