inArray,indexOf在二维数组中
inArray, indexOf in a 2-dimensional array
我有一个二维数组。例如
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
而不是i
,返回false
而不是-1
。
我认为inArray不起作用,因为使用==
比较两个相同的数组会返回false。您可以尝试使用grep
代替:
function subArrayInArray(subArray, array){
var matches = $.grep(array, function(a){
// Compare the target array with each of the child arrays
return $(subArray).not(a).length == 0 && $(a).not(subArray).length == 0;
});
return !!matches.length;
}
比较两个数组的方法是从这个问题中窃取的
相关文章:
- 作为一个二维数组,从ajax接收
- 创建P5.js二维数组
- 如何在Javascript中从select标记的一系列选项中构建二维数组
- inArray,indexOf在二维数组中
- 比较二维数组js
- 从二维数组中获取img src和img维度,并在body中显示
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 如何将以下字符串拆分为二维数组:
- 更新Aurelia中二维数组的视图
- 如何在JavaScript中拆分二维数组
- 在二维数组中搜索比嵌套循环更有效的方法
- 无法访问javascript中二维数组中的第二个字段
- 将一个二维数组传递给javascript中的函数
- 无法在 Javascript 中访问我的二维数组
- 将二维数组转换为单个数组
- 将一个数组与javascript中的二维数组进行比较
- JavaScript二维数组
- 如何从二维数组中删除重复项
- javascript中递归复制二维数组的算法
- 使用 indexOf 方法在二维数组中查找值