在Javascript / AngularJS中比较两个数组

时间:2017-03-10 09:43:26

标签: javascript angularjs

我想检查两个数组值是否相同。我正在使用带有复选框的表单。需要显示复选框数组中的任何更改吗?谁能帮我。两个阵列就像这样。

array1 = ['1','2','3']; //previous checklist
array2 = ['3','2','1']; //new checklist

4 个答案:

答案 0 :(得分:0)

这是一个比较两个数组的代码段。

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

var result = array1.length == array2.length && array1.every(function(element, index) {
    return element === array2[index]; 
});

alert(result);

然而,一个阵列中的1,2,3与另一个阵列中的3,2,1不相等。你没有提到要检查数组元素或只是数组!

如果你需要比较两个不同位置的数组,试试这个

var array1=[1,2,3,4]
var array2=[1,4,3,2]
var result = array1.length==array2.length && array1.every(function(v,i) { return ($.inArray(v,array2) != -1)})
console.log(result)

答案 1 :(得分:0)

我明白了:

let arr = ['1', '2', '3'];
let arr2 = ['3', '1', '2'];

let finalResult = arr.length === arr2.length;
arr.forEach(function (item) {
  if (!finalResult) {
    return;
  }

  if (arr2.find(function (item2) { return item === item2; }) === undefined) {
    finalResult = false;
  }
});

console.log(finalResult);

答案 2 :(得分:0)

// Warn if overriding existing method

if(Array.prototype.equals)
    console.warn("Overriding existing Array.prototype.equals. Possible causes: New API defines the method, there's a framework conflict or you've got double inclusions in your code.");

// attach the .equals method to Array's prototype to call it on any array

Array.prototype.equals = function (array) {

    // if the other array is a falsy value, return
    if (!array)
        return false;

    // compare lengths - can save a lot of time 
    if (this.length != array.length)
        return false;

    for (var i = 0, l=this.length; i < l; i++) {
        // Checking whether the array contains this element
        if(isValueExistsInArray(this[i],array) == false) {
            return false;
        }       
    }       
    return true;
}
function isValueExistsInArray(value,compareToArray) {
    for(var j = 0, k=compareToArray.length; j<k; j++) {
        if(value == compareToArray[j]) {
            return true;
        }
    }
    return false;
}
// Hide method from for-in loops
Object.defineProperty(Array.prototype, "equals", {enumerable: false});

array1 = ['1','2','3'];
array2 = ['1','2','3'];
array3 = ['3','2','1'];
array4 = ['3','5','1'];
array5 = ['3','5','1',6];

array1.equals(array2) == true
array1.equals(array3) == true
array1.equals(array4) == false
array1.equals(array5) == false

答案 3 :(得分:0)

最后,我有完美的答案来比较javascript中的两个数组。

JTextArea