我想知道數組是否在二維數組內。查找數組是否在二維數組中
這是我的嘗試:
var x=[1,2];
var y=[[1,1],[1,2],[2,2],[3,3]];
y.includes(x); //should return true
我想知道數組是否在二維數組內。查找數組是否在二維數組中
這是我的嘗試:
var x=[1,2];
var y=[[1,1],[1,2],[2,2],[3,3]];
y.includes(x); //should return true
你可以用鏈式陣列的方法做到這一點!
var ar = [
[1,1],[1,2],[2,2],[3,3]
];
hasDuplicates(ar, [1,"1"]); //false
hasDuplicates(ar, [1,1]); //true
//Use some to determine at least 1 inner array matches
function hasDuplicates(array, valueToCheck) {
return array.some(function(a, i) {
//Check each inner arrays index, and verify that it equals on the same index of the array we want to check
return a.every(function(ax, ix) {
return valueToCheck[ix] === ax; //triple equals for equality!
})
});
}
不錯的用法,有一段時間沒有見過這兩個:) – fubbe
你可以創建一個哈希:
var ar = [
[1,1],[1,2],[2,2],[3,3]
];
var hash = {};
for(var i = 0 ; i < ar.length; i += 1) {
hash[ar[i]] = i;
}
var val = [1,2];
if(hash.hasOwnProperty(val)) {
document.write(hash[val]);
}
不會區分'[「1」 ,「2」]和'[1,2]' - 不確定這個案件是否重要。 +1方式。 – tymeJV
是的,如果我們假設內部數組中的所有值都是整數而不是字符串,那麼這是一個很好的解決方案! – hackerrdave
即使2個陣列看起來是一樣的......他們是不一樣的數組引用。 '[1,2]!== [1,2]'如果你想使用庫,你不能直接將它們作爲對象 – charlietfl
進行比較,underscoreJs有'_.findIndex(y,x)',它會返回在'y'內部的位置http://underscorejs.org/#findIndex,或者你可以用'_.findIndex(y,x)> == 0'來進行真相測試。 – haxxxton