我希望数组的位置也相同,值也相同。
var array1 = [4,8,9,10];
var array2 = [4,8,9,10];
我试过这样
var array3 = array1 === array2 // returns false
我希望数组的位置也相同,值也相同。
var array1 = [4,8,9,10];
var array2 = [4,8,9,10];
我试过这样
var array3 = array1 === array2 // returns false
您可以使用Array.prototype.every()。(IE < 9 和其他旧浏览器需要一个 polyfill。)
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];
});
一种不太稳健的方法,但它有效。
a = [2, 4, 5].toString();
b = [2, 4, 5].toString();
console.log(a===b);
var array3 = array1 === array2
那会比较array1和array2是否是内存中的同一个数组对象,这不是你想要的。
为了执行您想要的操作,您需要检查两个数组是否具有相同的长度,以及每个索引中的每个成员是否相同。
假设你的数组充满了原语——数字和/或字符串——这样的事情应该做
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;
}
更现代的版本:
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]);
}
将非数组参数强制为空数组会阻止a.every()
爆炸。
如果您只想查看数组是否具有相同的元素集,则可以使用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));
}
你可以试试这个简单的方法
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.');
}
如果值的位置不重要,您可以先对数组进行排序。
if (array1.sort().join('|') === array2.sort().join('|')) {
console.log('The arrays are equal.');
} else {
console.log('The arrays are NOT equal.');
}