我有以下代码:
alert( [[0,1],[1,0]].indexOf([0,1]) );
即使数组[0,1]是二维数组的一个元素,我得到的值为'-1'.我在生活中做错了什么?
它不会找到你的元素,因为[0, 1]
并[0, 1]
没有以同样的方式是平等4
和4
有.
console.log(4 === 4); // true console.log([0, 1] === [0, 1]); // false
当你对类型为的东西进行相等性检查时object
,Javascript使用所谓的引用相等性.它检查两个对象是否实际上是同一个实例.
var a = [0, 1]; var b = [1, 0]; var arr = [a, b]; console.log(arr.indexOf(a)); // 0 console.log(a === arr[0]); // true
或者,您可以使用深度相等检查编写自己的搜索功能.
function deepSearch(arr, element) { for(var index = 0; index < arr.length; index++) { if(deepEqual(arr[index], element)) { return index; } } return -1; }