Javascript 比较两个阵列和can';我无法让它返回真值

Javascript 比较两个阵列和can';我无法让它返回真值,javascript,Javascript,我的目标是比较这两个阵列。我不能让它返回false,它只是比较第一个值并返回。我是否要求它在确定真或假之前正确地循环所有值 var array1 =[1,2,3]; var array2=[1,2,4]; var areArraysSame = function(array1, array2) { if(array1.length !== array2.length) { return "These are not the same length"; } for

我的目标是比较这两个阵列。我不能让它返回false,它只是比较第一个值并返回。我是否要求它在确定真或假之前正确地循环所有值

var array1 =[1,2,3];
var array2=[1,2,4];

var areArraysSame = function(array1, array2) {
   if(array1.length !== array2.length) {
       return "These are not the same length";
   }
   for(var i = 0; i <= array1.length; i++) {
      if(array1[i] !== array2[i]) {
      return "These are not the same array";

      }else{
      return "these are the same array";
      }
     }
    };
   console.log(areArraysSame(array1, array2));
var数组1=[1,2,3];
var array2=[1,2,4];
var ararrayssame=函数(array1,array2){
if(array1.length!==array2.length){
返回“这些长度不相同”;
}

对于(var i=0;i在返回
true
(或您的true字符串)之前,您没有等待所有比较发生

您应该这样做:

for(var i = 0; i <= array1.length; i++) {
    if(array1[i] !== array2[i]) {
        return false;
    }
}
return true;

for(var i=0;i在返回
true
(或您的true字符串)之前,您没有等待所有比较发生

您应该这样做:

for(var i = 0; i <= array1.length; i++) {
    if(array1[i] !== array2[i]) {
        return false;
    }
}
return true;

for(var i=0;i检查第一个值后立即返回,请删除for循环中的else块,以便它比较所有值,如下所示:

var array1 =[1,2,3];
var array2=[1,2,4];

var areArraysSame = function(array1, array2) {
 if(array1.length !== array2.length) {
   return "These are not the same length";
 }
for(var i = 0; i <= array1.length; i++) {
  if(array1[i] !== array2[i]) {
   return "These are not the same array";
  }
 }
 return "These are the same array";
};
console.log(areArraysSame(array1, array2));
var数组1=[1,2,3];
var array2=[1,2,4];
var ararrayssame=函数(array1,array2){
if(array1.length!==array2.length){
返回“这些长度不相同”;
}

对于(var i=0;i您在检查第一个值后立即返回,请删除for循环中的else块,以便它比较所有值,如下所示:

var array1 =[1,2,3];
var array2=[1,2,4];

var areArraysSame = function(array1, array2) {
 if(array1.length !== array2.length) {
   return "These are not the same length";
 }
for(var i = 0; i <= array1.length; i++) {
  if(array1[i] !== array2[i]) {
   return "These are not the same array";
  }
 }
 return "These are the same array";
};
console.log(areArraysSame(array1, array2));
var数组1=[1,2,3];
var array2=[1,2,4];
var ararrayssame=函数(array1,array2){
if(array1.length!==array2.length){
返回“这些长度不相同”;
}

对于(var i=0;iReturn将停止循环并退出函数。因此,由于在上述代码中,两个数组的第一个元素都是1,因此代码将在循环的第一次迭代中返回。如果要返回数组是否匹配,请在循环后返回,并使用布尔变量跟踪数组是否匹配。只有retu返回将停止循环并退出函数。因此,在上述代码中,两个数组的第一个元素都是1,因此代码将在循环的第一次迭代中返回。如果要返回数组是否匹配,请在循环后返回,并使用布尔变量跟踪是否匹配数组匹配。仅在循环中返回false语句。

在for循环的第一次迭代中有一个return语句;比较每个数组中的第一项后,无论它是true还是false,循环都将结束

您可以存储一个条件,并以此为基础进行报税

    var array1 = [1, 2, 3];
    var array2 = [1, 2, 4];

    var areArraysSame = function (array1, array2) {
        var isSame = true;

        if (array1.length !== array2.length) {
            return "These are not the same length";
        }

        for (var i = 0; i <= array1.length; i++) {
            if (array1[i] !== array2[i]) {
                isSame = false;
            }
        }
        return isSame ? "These are the same array" : "These are not the same array";
    };

    console.log(areArraysSame(array1, array2));
vararray1=[1,2,3];
var array2=[1,2,4];
var ararrayssame=函数(array1,array2){
var IsName=true;
if(array1.length!==array2.length){
返回“这些长度不相同”;
}

for(var i=0;i在for循环的第一次迭代中有一个return语句;比较每个数组中的第一项后,无论它是真是假,循环都将结束

您可以存储一个条件,并以此为基础进行报税

    var array1 = [1, 2, 3];
    var array2 = [1, 2, 4];

    var areArraysSame = function (array1, array2) {
        var isSame = true;

        if (array1.length !== array2.length) {
            return "These are not the same length";
        }

        for (var i = 0; i <= array1.length; i++) {
            if (array1[i] !== array2[i]) {
                isSame = false;
            }
        }
        return isSame ? "These are the same array" : "These are not the same array";
    };

    console.log(areArraysSame(array1, array2));
vararray1=[1,2,3];
var array2=[1,2,4];
var ararrayssame=函数(array1,array2){
var IsName=true;
if(array1.length!==array2.length){
返回“这些长度不相同”;
}

对于(var i=0;i)它永远不会返回false,因为它总是返回一个字符串值。此外,您总是在比较两个数组中的第一项之后返回。我看到的一个问题是else语句。您当前的意思是,如果每个数组中的当前元素与另一个相同,则数组相同。这只执行r一次迭代,因为您立即返回一个值。如果两个元素不相同,您应该只需要返回false。如果函数到达for循环的末尾,您知道所有元素都是相同的,因此返回true。要基于@WillP.所说的内容构建,您应该看看JavaScript考虑了什么,因为它并不总是这样这是100%直观的。它永远不会返回false,因为它总是返回字符串值。此外,您总是在比较两个数组中的第一项后返回。我看到的一个问题是else语句。您当前的意思是,如果每个数组中的当前元素与另一个相同,则数组相同。这只会执行对于一次迭代,因为您立即返回一个值。如果两个元素不相同,您应该只需要返回false。如果函数到达for循环的末尾,您知道所有元素都是相同的,因此返回true。要基于@WillP.said,您应该看看JavaScript考虑了什么,因为它不是al方法100%直观。我在更新相同的:)@Keiwan谢谢这项工作-我现在明白我需要将返回值设置为true,不在循环中。@suzo是的,我看到了你的编辑,这就是为什么我再次删除了我的评论:)我在更新相同的:)@KeiwanThank这很有效-我知道现在我需要将返回值置于循环之外。@suzo是的,我看到了你的编辑,这就是为什么我再次删除了我的评论:)