我有两个数组如下:
var arr1 = [1,2,3,8,7,5,7,2,9,0];
var arr2 = [8,7,5];
我想将arr2
与arr1
进行比较,当它发现arr2
完全按照与它相同的顺序时,它应该返回true
。即如果在[8,7,5]
中找到arr1
完全相同的序列,那么它将返回true
。
注意:
我们必须在不使用indexOf
的情况下执行此操作。
答案 0 :(得分:1)
您可以使用Array#some
和Array#every
的组合。
var array1 = [1, 2, 3, 8, 7, 5, 7, 2, 9, 0],
array2 = [8, 7, 5],
result = array1.some(function (a, i, aa) {
return array2.every(function (b, j) {
return aa[i + j] === b;
});
});
console.log(result);
答案 1 :(得分:1)
您可以遍历最大的数组。在每次迭代时,将下一个值与较小数组中找到的所有值进行比较。如果它们都匹配,那么它包含较小的数组。
var arr1 = [1,2,3,8,7,5,7,2,9,0];
var arr2 = [8,7,5];
console.log(doesArrayContain(arr2, arr1));
function doesArrayContain(smallestArray, biggestArray) {
for (var i = 0; i < biggestArray.length; i++) {
var doesMatch = true;
for (var j = 0; j < smallestArray.length; j++) {
if (biggestArray[i + j] !== smallestArray[j]) {
doesMatch = false; break;
}
}
if (doesMatch) {
return true;
}
}
return false;
}