Sud*_*n S 41 javascript arrays jquery
我希望数组的位置也相同,值也相同.
var array1 = [4,8,9,10];
var array2 = [4,8,9,10];
Run Code Online (Sandbox Code Playgroud)
我试过这样的
var array3 = array1 === array2 // returns false
Run Code Online (Sandbox Code Playgroud)
xda*_*azz 124
您可以使用Array.prototype.every().(IE <9和其他旧浏览器需要填充.)
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];
});
Run Code Online (Sandbox Code Playgroud)
小智 36
一种不太健壮的方法,但它的工作原理.
a = [2, 4, 5].toString();
b = [2, 4, 5].toString();
console.log(a===b);
Run Code Online (Sandbox Code Playgroud)
Ada*_*kis 10
var array3 = array1 === array2
Run Code Online (Sandbox Code Playgroud)
这将比较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;
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试这种简单的方法
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.');
}
Run Code Online (Sandbox Code Playgroud)
如果值的位置不重要,则可以先对数组进行排序。
if (array1.sort().join('|') === array2.sort().join('|')) {
console.log('The arrays are equal.');
} else {
console.log('The arrays are NOT equal.');
}
Run Code Online (Sandbox Code Playgroud)
一个更现代的版本:
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]);
}
Run Code Online (Sandbox Code Playgroud)
将非数组参数强制为空数组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));
}
Run Code Online (Sandbox Code Playgroud)