如何在javascript中将一个数组与另一个数组进行比较?

时间:2017-04-25 15:26:25

标签: javascript arrays

我有两个数组如下:

var arr1 = [1,2,3,8,7,5,7,2,9,0];
var arr2 = [8,7,5];

我想将arr2arr1进行比较,当它发现arr2完全按照与它相同的顺序时,它应该返回true。即如果在[8,7,5]中找到arr1完全相同的序列,那么它将返回true

注意: 我们必须在不使用indexOf的情况下执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以使用Array#someArray#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;
}