[英]I'm trying to create an array from ES class arguments but I'm getting an empty Array, why?
考慮此代碼,用於在此 ES 類中創建一個值為“sideLength”的數組和“邊”時間的數組,但我一直得到一個空數組!! 這是codepen鏈接
class ShapeNew {
constructor(name, sides, sideLength) {
this.name = name;
this.sides = sides;
this.sideLength = sideLength;
}
tryArray() {
let sides_array = [];
for (let i = 0; i < this.sides; i++) {
sides_array = sides_array.push(this.sideLength);
}
return sides_array;
}
newPerimeter() {
let peri = this.tryArray();
console.log(peri.reduce((sum, accum) => sum + accum));
}
}
let new_square = new ShapeNew("square", 4, 5);
new_square.newPerimeter();
我想要做的就是將 4 轉換為 [5,5,5,5],我該怎么做?
提前感謝您對此進行調查,我很感激:)
你要這個
sides_array.push(this.sideLength);
不是這個
sides_array = sides_array.push(this.sideLength);
因為Array.push()
不返回任何內容。
您正在為變量sides_array
分配推送新元素的返回值,即新長度,而不是每次推送元素
class ShapeNew { constructor(name, sides, sideLength) { this.name = name; this.sides = sides; this.sideLength = sideLength; } tryArray() { let sides_array = []; for (let i = 0; i < this.sides; i++) { sides_array.push(this.sideLength); } return sides_array; } newPerimeter() { let peri = this.tryArray(); console.log(peri.reduce((sum, accum) => sum + accum)); } } let new_square = new ShapeNew("square", 4, 5); new_square.newPerimeter();
但我想知道,如果你想做的只是計算周長,那你為什么不把邊乘以邊長呢?!
class ShapeNew { constructor(name, sides, sideLength) { this.name = name; this.sides = sides; this.sideLength = sideLength; } perimeter() { return this.sideLength * this.sides; } } let new_square = new ShapeNew("square", 4, 5); console.log(new_square.perimeter());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.