Javascript 求多边形的周长
代码顶部的注释中给出了问题的描述。 我得到的输出是NaN,而不是周长的整数值Javascript 求多边形的周长,javascript,arrays,Javascript,Arrays,代码顶部的注释中给出了问题的描述。 我得到的输出是NaN,而不是周长的整数值 /* * Implement a Polygon class with the following properties: * 1. A constructor that takes an array of integer side lengths. * 2. A 'perimeter' method that returns the sum of the Polygon's side lengths. */
/*
* Implement a Polygon class with the following properties:
* 1. A constructor that takes an array of integer side lengths.
* 2. A 'perimeter' method that returns the sum of the Polygon's side lengths.
*/
class Polygon
{
constructor(sides)
{
this.sides = sides;
}
perimeter()
{
var per = 0;
for (var i = 0; i <= this.sides.length; i++)
{
per += this.sides[i];
}
return per;
}
}
for
循环的限制超过数组末尾1
用于(var i=0;iChange其他答案都是正确的,问题是i
将从数组的末尾消失一次,这会给您带来问题。这是使用for循环在数组上迭代时可能出现的问题的一个示例;i
只是与您所使用的数组偶然相关如果我们认为在i
和数组之间创建的关系与我们在代码中创建的关系不完全相同,则很容易出现问题
出于这个原因,我建议使用类似于reduce
的方法。您也可以使用forEach
并跟踪求和,但reduce
是迄今为止求和的最佳选择,因为它的设计目的是获取可计算的内容并生成单个值
这可能看起来是这样的:
类多边形
{
建造师(侧面)
{
这个边=边;
}
周长()
{
返回此.sides.reduce((上一个,当前)=>上一个+当前,0);
}
}
常数矩形=新多边形([10,20,10,20]);
常数平方=新多边形([10,10,10,10]);
常数五角大楼=新多边形([10,20,30,40,43]);
console.log(rectangle.permiture());
console.log(square.permiture());
console.log(pentage.permiture());
您迭代得太远了:我更改数组中的索引从0开始,一直到N-1。因此,正如其他人所说,您应该替换也是与的重复
const rectangle = new Polygon([10, 20, 10, 20]);
const square = new Polygon([10, 10, 10, 10]);
const pentagon = new Polygon([10, 20, 30, 40, 43]);
console.log(rectangle.perimeter());
console.log(square.perimeter());
console.log(pentagon.perimeter());
for (var i = 0; i <= this.sides.length; i++)
for (var i = 0; i < this.sides.length; i++)