私はいくつかの配列を持つ配列を持っています...
今、配列が配列に既に存在するかどうかを確認したい...それは可能ですか?..
arr1 = [0, 0];
arr2 = [[0, 0], [0, 1]]
console.log($.inArray(arr1, arr2));
return : -1
私はいくつかの配列を持つ配列を持っています...
今、配列が配列に既に存在するかどうかを確認したい...それは可能ですか?..
arr1 = [0, 0];
arr2 = [[0, 0], [0, 1]]
console.log($.inArray(arr1, arr2));
return : -1
inArray
同じ値が含まれていても、2 つの異なるオブジェクトであるため、実行できません。
console.log([0,0] == [0,0]); //=> false, they're different objects
値が一致するかどうかをループして確認する必要があります。
var has = false;
for (var i=0; i<arr2.length; i++) {
if (arr2[i][0] === arr1[0] && arr2[i][1] === arr1[1]) {
has = true;
break;
}
}
配列をループする一般的な関数を次に示します。
function arrayContains(big, small) {
for (var i = 0; i < big.length; i++) {
if (big[i].length === small.length) {
var j = 0;
while (j < small.length && small[j] === big[i][j]) j++;
if (j === small.length) return true;
}
}
return false;
}
使用法:
arr1 = [0, 0];
arr2 = [[0, 0], [0, 1]];
console.log(arrayContains(arr2, arr1)); // true
console.log(arrayContains(arr2, [0, 1])); // true
console.log(arrayContains(arr2, [0, 0, 0])); // false
console.log(arrayContains(arr2, [1, 0])); // false
console.log(arrayContains(arr2, [1, 1])); // false