javascript - 确定其三 Angular 形javascript代码是否有问题/初学者

标签 javascript

这段代码假设判断三边长是否是三 Angular 形, 然而出了问题,我无法理解什么,因为我相信逻辑是存在的......

任何人都可以看一下这段代码并让我走上正确的轨道吗...我也想知道为什么我不能将带有元素的数组分配为函数参数,例如:

函数 isTriangle(arrAline[i]....等等?

我绝对是初学者,这让我很困惑:D

let arrAline = [474, 431, 372, 1887, 1064, 3212, 1057];
let arrBline = [684, 623, 525, 548, 573, 1328, 2376];
let arrCline = [1339, 709, 1179, 881, 304, 956, 959];

let i = 0;

function isTriangle(arrAline, arrBline, arrCline) {
  for (i = 0; i < arrAline.length; i++) {
    if (arrAline[i] + arrBline[i] > arrCline[i] && arrAline[i] + arrCline[i] > arrBline[i] && arrCline[i] + arrBline[i] > arrAline[i]) {
      return true;
    } else {
      return false;
    }
  }
};
isTriangle(arrAline[i], arrBline[i], arrCline[i]);


//a + b > c
//a + c > b
//c + b > a

谢谢!

最佳答案

主要问题是您混淆了 i 的使用。您可以定义 i在函数本地,不要在函数调用中使用它,或者将循环移到函数外部,进入主代码。

如果您采用第一种方法,那么问题是您 (1) 不将数组作为函数参数传递,并且 (2) 始终 returnfor循环。

无论结果如何,您都应该迭代所有条目,而不仅仅是在第一次迭代时退出,而使所有其他条目未被访问。

相反,您应该收集新数组中的 bool 结果,并继续迭代,然后在访问所有条目后,返回该结果数组。

旁注:在这种情况下,不要定义 i在你的职能之外。它应该在函数内声明为局部变量。

这是如何工作的:

function isTriangle(arrAline, arrBline, arrCline) {
  let result = [];
  for (let i = 0; i < arrAline.length; i++) {
    if (arrAline[i] + arrBline[i] > arrCline[i] && arrAline[i] + arrCline[i] > arrBline[i] && arrCline[i] + arrBline[i] > arrAline[i]) {
      result.push(true);
    } else {
      result.push(false);
    }
  }
  return result;
};


let arrAline = [474, 431, 372, 1887, 1064, 3212, 1057];
let arrBline = [684, 623, 525, 548, 573, 1328, 2376];
let arrCline = [1339, 709, 1179, 881, 304, 956, 959];
console.log(isTriangle(arrAline, arrBline, arrCline)); // don't use `i` here.

您当然也可以采用第二种方法,这样就不需要 result变量,但也不要将函数参数用作数组,并移动 for循环到主代码:

function isTriangle(aline, bline, cline) {
    if (aline + bline > cline && aline + cline > cline && cline + bline > aline) {
         return true;
    } else {
         return false;
    }
};


let arrAline = [474, 431, 372, 1887, 1064, 3212, 1057];
let arrBline = [684, 623, 525, 548, 573, 1328, 2376];
let arrCline = [1339, 709, 1179, 881, 304, 956, 959];
for (let i = 0; i < arrAline.length; i++) {
    console.log(isTriangle(arrAline[i], arrBline[i], arrCline[i]));
}

关于javascript - 确定其三 Angular 形javascript代码是否有问题/初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58899303/

相关文章:

javascript - 在 sencha touch 2 中滚动面板时出现文本字段焦点问题

javascript - 如何使用innerHTML 根据用户的输入创建可点击的链接?

javascript - 有什么方法可以在 Backbone 中使用 JSX 或类似的东西吗?

javascript - 正则表达式匹配各种类型的表情列表

javascript - 过滤Google App Script的html部分中的表格

javascript - 检查字符串是否包含任何没有正则表达式的字符串数组

javascript - executeScript 未定义或不是 ManifestV3 扩展中的函数

javascript - 如何仅在滚动时更改div背景颜色?

javascript - 我想使用句柄调用对象的特定实例,例如。{{ object.someAttribute 2 }}

javascript - 仅替换 iframe 的编码字符 Jquery