我有一个二维数组。例如

var bruecken = [[1,2],[3,4]];


现在我正在尝试测试,如果子数组存在:

console.log(jQuery.inArray([1,2], bruecken));


要么

console.log(bruecken.indexOf([1,2]));


但两种方式都返回-1。我究竟做错了什么?

最佳答案

最快的方法是使用for循环并进行比较,如果找到则返回。这是您可以使用的东西,我使用JSON进行比较,但是您可以使用最适合的比较器(有很多):

function arrayInArray(needle, haystack) {
    var i=0, len=haystack.length, target=JSON.stringify(needle);
    for(; i<len; i++) {
        if (JSON.stringify(haystack[i]) == target) {
            return i;
        }
    }
    return -1;
}

arrayInArray( [0,1], [ [1,2], [0,1] ] ); // 1


如果要布尔值,只需返回true而不是ifalse而不是-1

10-02 17:20