问题:
如果他们各自能够举起的最重的重物相等,则称两只手臂同样强壮。
如果他们最强壮的手臂同样强壮(最强壮的手臂可以是右手和左手),那么两个人同样强壮,他们最弱的手臂也是如此。
鉴于你和你朋友的武器提升能力,你会发现两个人是否同样强大。
问题:
当所有数字相等时,我的解决方案一直显示为false。例如,当>你= [10,15]和朋友= [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;
}
答案 0 :(得分:0)
你得到的错误&#39;结果是因为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;
}
答案 1 :(得分:0)
您的问题是您尝试将项目列表与另一项目列表进行比较,甚至无需阅读列表中的项目。当你执行===
时,你正在比较该项的值,这不能是一个数组,因为它不够聪明,无法循环遍历它们并进行比较(这就是每个存在的原因;) - 所以"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;
}
答案 2 :(得分:0)
一种方法是将数组转换为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;
}
}