使用.some()比较数组

时间:2016-01-28 08:17:34

标签: javascript arrays

所以我试图比较2个数组,看它们的内容是否相同,见下面的例子

var array1 = [0,2,2,2,1]
var array2 = [0,2,2,2,3]

我想使用某种方法比较这两个数组 所以我会编写一个函数,如果某些数字都在两个数组中,则返回true。

我在一个试图找到特定值的数组上完全使用了该方法

function testArray(){
 var bool = array1.some(function(value){
   return value ===1;
 });
}
console.log(bool)

但是如何将它用于2个阵列?任何帮助表示赞赏

3 个答案:

答案 0 :(得分:0)

Array.prototype.every()

的解决方案
  

every()方法测试数组中的所有元素是否都通过了提供的函数实现的测试。

Array.prototype.some()

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

执行相同的任务。请看刘海!



var array1 = [0, 2, 2, 2, 1],
    array2 = [0, 2, 2, 2, 3];

function compareEvery(a1, a2) {
    if (a1.length !== a2.length) { return false; }
    return a1.every(function (a, i) {
        return a === a2[i];
    });
}

function compareSome(a1, a2) {
    if (a1.length !== a2.length) { return false; }
    return !a1.some(function (a, i) {
        return a !== a2[i];
    });
}

document.write(compareEvery(array1, array2) + '<br>');
document.write(compareEvery(array1, array1) + '<br>');

document.write(compareSome(array1, array2) + '<br>');
document.write(compareSome(array1, array1) + '<br>');
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

如果要测试两个数组是否包含相同的值,可以将someindexOf结合使用:

function containsSameValue(arr1, arr2) {
    return arr1.some(function(value) {
        return arr2.indexOf(value) > -1;
    });
}

var array1 = [0, 2, 2, 2, 1];
var array2 = [0, 2, 2, 2, 3];

containsSameValue(array1, array2); // true
containsSameValue([1, 2, 3], [4, 5, 6]); // false

答案 2 :(得分:-1)

您可以使用此方法

function compare(arr1, arr2) {
    if (arr1.length != arr2.length) return false;
    for (var i = 0; i < arr2.length; i++) {
        if (arr1[i].compare) { 
            if (!arr1[i].compare(arr2[i])) return false;
        }
        if (arr1[i] !== arr2[i]) return false;
    }
    return true;
}

var array1 = [0, 2, 2, 2, 1];
var array2 = [0, 2, 2, 2, 3];
compare(array1, array2);