JavaScript 比较数组在不应该失败的时候失败



问题:

如果他们每个人都能抬起的最重的重量,则双臂同样强。

如果两个人最强壮的手臂同样强壮(最强的手臂既可以是右侧和左手(,

同样强壮,他们的手臂也是最弱的。

鉴于您和您朋友的手臂的举重能力找出您两个同样强大的功能。

问题:

当所有数字相等时,我的解决方案都会不断显示错误。例如,当> you = [10,15]和friend = [10,15]时,当应该为真时,我会变得错误。确保在这里是用户错误。:(

function areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) {
    var you = [yourLeft, yourRight];
    var friend = [friendsLeft, friendsRight];
    you.sort(), friend.sort();
    console.log(you, friend)
    if(you === friend){
        return true;
    }else{
        return false;
    }
}

修复,谢谢!

function areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) {
    var you = [yourLeft, yourRight];
    var friend = [friendsLeft, friendsRight];
    you.sort(), friend.sort();
    console.log(you, friend)
    for(var i = 0; i < you.length; i++) {
        if(you[i] !== friend[i])
            return false;
    }
    return true;
}

您的问题是,您正在尝试将项目列表与其他项目列表进行比较,甚至不阅读列表中的项目。当您执行===时,您正在比较该项目的值,这不可能是一个数组,因为它不够聪明,无法遍历它们并比较(这就是每个存在的原因;( - 所以 "10" === "10 = true但 ["10"] === ["10"] = false

您有一个数组,因此您需要遍历元素匹配的每个索引。.我假设您在两个数组中始终都有相等的数字,以便您可以做类似的事情:

function areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) {
    var you = [yourLeft, yourRight];
    var friend = [friendsLeft, friendsRight];
    you.sort(), friend.sort();
    console.log(you, friend)
    for(var i = 0; i < you.length; i++) {
        if(you[i] !== friend[i])
            return false;
    }
    return true;
}

您会得到'false'结果,因为JavaScript中的数组通过引用比较而不是通过值比较。为了找出两个数组是否包含具有相同值的元素,您应该使用以下方法。

function areArraysEqual(array1, array2) {
  var result = true;
  var length1 = array1.length;
  var length2 = array2.length;
  if (length1 !== length2) {
    return false;
  }
  array1.sort();
  array2.sort();
  for (var i = 0; i < length1; i++) {
    if (array1[i] !== array2[i]) {
      result = false;
      break;
    }
  }
  return result;
}

一种方法是将数组转换为JSON对象。这个,有效:

function areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) {
var you = [yourLeft,yourRight];
var friend = [friendsLeft,friendsRight];
you.sort(), friend.sort();
you = JSON.stringify(you);
friend = JSON.stringify(friend);
console.log(you, friend)
if(you == friend){
    return true;
}else{
    return false;
}
}

最新更新