webentwicklung-frage-antwort-db.com.de

Wie kann man zwei Arrays mit Javascript vergleichen?

Ich möchte Position des Arrays ist auch gleich und Wert auch gleich.

var array1 = [4,8,9,10];
var array2 = [4,8,9,10];

Ich habe es so versucht

var array3 = array1 === array2   // returns false
37
Sudharsan S

Sie können Array.prototype.every (). (Für IE <9 und andere alte Browser.

var array1 = [4,8,9,10];
var array2 = [4,8,9,10];

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

DIE ARBEITSDEMO.

114
xdazz

Ein weniger robuster Ansatz, aber es funktioniert.

a = [2, 4, 5].toString();
b = [2, 4, 5].toString();

console.log(a===b);
33
user2421180
var array3 = array1 === array2

Das vergleicht, ob Array1 und Array2 dasselbe Array-Objekt im Speicher sind, was Sie nicht möchten. 

Um das zu tun, was Sie möchten, müssen Sie prüfen, ob die beiden Arrays dieselbe Länge haben, und dass jedes Mitglied in jedem Index identisch ist. 

Angenommen, Ihr Array ist mit Primitiven gefüllt - Zahlen und/oder Zeichenfolgen -, so etwas sollte dies tun

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

Sie können diesen einfachen Ansatz ausprobieren

var array1 = [4,8,9,10];
var array2 = [4,8,9,10];

console.log(array1.join('|'));
console.log(array2.join('|'));

if (array1.join('|') === array2.join('|')) {
	console.log('The arrays are equal.');
} else {
	console.log('The arrays are NOT equal.');
}

array1 = [[1,2],[3,4],[5,6],[7,8]];
array2 = [[1,2],[3,4],[5,6],[7,8]];

console.log(array1.join('|'));
console.log(array2.join('|'));

if (array1.join('|') === array2.join('|')) {
	console.log('The arrays are equal.');
} else {
	console.log('The arrays are NOT equal.');
}

Wenn die Position der Werte nicht wichtig ist, können Sie die Arrays zuerst sortieren.

if (array1.sort().join('|') === array2.sort().join('|')) {
    console.log('The arrays are equal.');
} else {
    console.log('The arrays are NOT equal.');
}
4
Steve Bucknall

Eine modernere Version:

function arraysEqual(a, b) {
  a = Array.isArray(a) ? a : [];
  b = Array.isArray(b) ? b : [];
  return a.length === b.length && a.every((el, ix) => el === b[ix]);
}

Durch das Erzwingen von Nicht-Array-Argumenten in leere Arrays kann a.every() nicht mehr explodieren.

Wenn Sie nur sehen möchten, ob die Arrays die gleiche Gruppe von Elementen haben, können Sie Array.includes() verwenden:

function arraysContainSame(a, b) {
  a = Array.isArray(a) ? a : [];
  b = Array.isArray(b) ? b : [];
  return a.length === b.length && a.every(el => b.includes(el));
}
4
David G

Verwenden Sie lodash . In ES6-Syntax:

import isEqual from 'lodash/isEqual';
let equal = isEqual([1,2], [1,2]);  // true

Oder frühere js-Versionen:

var isEqual = require('lodash/isEqual');
var equal = isEqual([1,2], [1,2]);  // true
3
omarjebari

Wenn Sie 2 Arrays vergleichen, deren Werte jedoch nicht im selben Index liegen, versuchen Sie dies

var array1=[1,2,3,4]
var array2=[1,4,3,2]
var is_equal = array1.length==array2.length && array1.every(function(v,i) { return ($.inArray(v,array2) != -1)})
console.log(is_equal)
1
SathishVenkat
function isEqual(a) {
if (arrayData.length > 0) {
    for (var i in arrayData) {
        if (JSON.stringify(arrayData[i]) === JSON.stringify(a)) {
            alert("Ya existe un registro con esta informacion");
            return false;
        }
    }
}
}

Überprüfe dieses Beispiel

0
SPC ANGEL

Hier geht der Code. Welches ist in der Lage, Arrays von jeder Position aus zu vergleichen. 

var array1 = [4,8,10,9];

var array2 = [10,8,9,4];

var is_same = array1.length == array2.length && array1.every(function(element, index) {
    //return element === array2[index];
  if(array2.indexOf(element)>-1){
    return element = array2[array2.indexOf(element)];
  }
});
console.log(is_same);
0
Zia