Javascript 如何检查两个数组是否相等?
我试图比较两个数组是否相等。我正在分解数组Javascript 如何检查两个数组是否相等?,javascript,arrays,Javascript,Arrays,我试图比较两个数组是否相等。我正在分解数组a,最后将它们存储到两个不同的数组b和c。最后,我正在控制台中检查数组b和c 控制台显示相等的值,但当我比较两个数组时,我得到的数组不相等 这是我的密码: var a = [1,2,3,4,3,2,1]; var b = []; var c = []; var t = 0; var length = a.length; console.log("is the array length" + length); if (length %2 !== 0) {
a
,最后将它们存储到两个不同的数组b
和c
。最后,我正在控制台中检查数组b
和c
控制台显示相等的值,但当我比较两个数组时,我得到的数组不相等
这是我的密码:
var a = [1,2,3,4,3,2,1];
var b = [];
var c = [];
var t = 0;
var length = a.length;
console.log("is the array length" + length);
if (length %2 !== 0) {
var mid = parseInt(length/2)-1;
console.log(a[mid]);
for(var j=length-1; j>(mid+1); j--) {
c[t] = a[j];
t++;
}
for(var i=0; i<=mid; i++) {
b[i] = a[i];
}
console.log(c);
console.log(b);
if(b == c) { //comparing the array b and c
console.log("true");
}
else {
console.log("no")
}
}
var a=[1,2,3,4,3,2,1];
var b=[];
var c=[];
var t=0;
变量长度=a.长度;
log(“是数组长度”+长度);
如果(长度%2!==0){
var mid=parseInt(长度/2)-1;
console.log(a[mid]);
对于(var j=length-1;j>(mid+1);j--){
c[t]=a[j];
t++;
}
for(var i=0;i取决于您对“相等”的定义-如果两个数组在同一位置包含相同的元素,您可以使用every
:
let areEqual = a.length === b.length && a.every((item, index) => b[index] === item);
如果您只想检查它们是否包含相同的元素,您仍然可以使用every
,而无需进行索引检查:
let areEqual = a.length === b.length && a.every(item => b.indexOf(item) > -1);
首先,分割数组的代码过于复杂。您可以简单地进行切片:
var a= [1,2,3,4,3,2,1],
mid = Math.floor(a.length/2),
b = a.slice(0,mid),
c = a.slice(mid).reverse();
要比较两个数组,您可以创建一个字符串(因为您可以轻松比较字符串):
或者迭代并检查以下各项:
if( b.length === c.length
&& b.every((v,i)=> v === c[i])) alert("equal");
如果您只想比较a是否为年鉴,则更容易:
var a= [1,2,3,4,3,2,1];
if( a.every((v,i)=>v===a[a.length-1-i]) ) alert("anagram!");
它太长了,但您可以使用:
/*$(函数(){
$(“.nav项”)。单击(函数(){
$(“.nav项”)。每个(函数(){
$(this.find(“a”).removeClass(“active”);
});
$(this.find(“a”).addClass(“active”);
});
});*/
//如果重写现有方法,则发出警告
if(Array.prototype.equals)
console.warn(“覆盖现有的Array.prototype.equals。可能的原因:新API定义了方法,存在框架冲突,或者代码中包含了双重内容。”);
//将.equals方法附加到数组的原型以在任何数组上调用它
Array.prototype.equals=函数(数组){
//如果另一个数组是falsy值,则返回
if(!数组)
返回false;
//比较长度-可以节省大量时间
if(this.length!=array.length)
返回false;
for(var i=0,l=this.length;i(中间+1);j--){
c[t]=a[j];
t++;
}
for(var i=0;i数组永远不相等。它们存储在不同的mem位置。所以我无法比较两个数组??我想要数组C以相反的方式,所以我使用for循环以相反的顺序获得它…因为我无法使用slice方法来实现这一点。@ashish sah,这就是为什么.reverse()对。。。
var a= [1,2,3,4,3,2,1];
if( a.every((v,i)=>v===a[a.length-1-i]) ) alert("anagram!");