问题:
如果他们每个人都能抬起的最重的重量,则双臂同样强。
如果两个人最强壮的手臂同样强壮(最强的手臂既可以是右侧和左手(,
同样强壮,他们的手臂也是最弱的。
鉴于您和您朋友的手臂的举重能力找出您两个同样强大的功能。
问题:
当所有数字相等时,我的解决方案都会不断显示错误。例如,当> 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;
}
}