Je veux que la position du tableau soit aussi identique et que la même valeur.
var array1 = [4,8,9,10];
var array2 = [4,8,9,10];
J'ai essayé comme ça
var array3 = array1 === array2 // returns false
Vous pouvez utiliser Array.prototype.every (). (Un polyfill est nécessaire pour IE <9 et d'autres anciens navigateurs.
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];
});
Une approche moins robuste, mais ça marche.
a = [2, 4, 5].toString();
b = [2, 4, 5].toString();
console.log(a===b);
var array3 = array1 === array2
Cela permettra de comparer si array1 et array2 sont le même objet array en mémoire, ce qui n'est pas ce que vous voulez.
Afin de faire ce que vous voulez, vous devrez vérifier si les deux tableaux ont la même longueur, et que chaque membre de chaque index est identique.
En supposant que votre tableau est rempli de primitives - nombres ou chaînes - quelque chose comme ceci devrait faire
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;
}
Vous pouvez essayer cette approche simple
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.');
}
Si la position des valeurs n'est pas importante, vous pouvez d'abord trier les tableaux.
if (array1.sort().join('|') === array2.sort().join('|')) {
console.log('The arrays are equal.');
} else {
console.log('The arrays are NOT equal.');
}
Une version plus moderne:
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]);
}
Le fait de forcer des arguments autres que des tableaux pour vider des tableaux arrête l'explosion de a.every()
.
Si vous voulez juste voir si les tableaux ont le même ensemble d'éléments, vous pouvez utiliser Array.includes()
:
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));
}
Utilisez lodash . Dans la syntaxe ES6:
import isEqual from 'lodash/isEqual';
let equal = isEqual([1,2], [1,2]); // true
Ou versions précédentes de js:
var isEqual = require('lodash/isEqual');
var equal = isEqual([1,2], [1,2]); // true
Si vous comparez 2 tableaux mais que les valeurs ne sont pas dans le même index, essayez ceci
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;
}
}
}
}
Voici le code. Qui est capable de comparer des tableaux par n'importe quelle position.
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);