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
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];
});
Ein weniger robuster Ansatz, aber es funktioniert.
a = [2, 4, 5].toString();
b = [2, 4, 5].toString();
console.log(a===b);
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;
}
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.');
}
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));
}
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
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)
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;
}
}
}
}
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);