joe*_*ish 8 javascript arrays jquery
我有一个嵌套数组的数组,如下所示:
var tw = [[3, 0], [11, 0], [3, 14], [11, 14]];
Run Code Online (Sandbox Code Playgroud)
当我尝试查找数组是否tw包含传入的数组时,我总是得到-1的结果.
例如:
var test = $.inArray([3, 0], tw);
var test2 = tw.indexOf([3, 0]);
Run Code Online (Sandbox Code Playgroud)
返回-1,即使数组中的第一个对象是[3,0]
如何查明我的数组中是否包含特定的数组数组?
哦,到目前为止我只在IE9上测试过它.
Tim*_*own 10
那是因为你正在寻找一个不同的对象.indexOf()使用严格的相等比较(如===运算符)并[3, 0] === [3, 0]返回false.
您需要手动搜索.下面是一个使用更通用indexOf()函数的示例,该函数使用自定义比较器函数(评论中@ ajax333221建议改进):
// Shallow array comparer
function arraysIdentical(arr1, arr2) {
var i = arr1.length;
if (i !== arr2.length) {
return false;
}
while (i--) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
}
function indexOf(arr, val, comparer) {
for (var i = 0, len = arr.length; i < len; ++i) {
if ( i in arr && comparer(arr[i], val) ) {
return i;
}
}
return -1;
}
var tw = [[3, 0], [11, 0], [3, 14], [11, 14]];
alert( indexOf(tw, [3, 0], arraysIdentical) ); // Alerts 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5198 次 |
| 最近记录: |