簡體   English   中英

我試圖從 ES 類參數創建一個數組,但我得到一個空數組,為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM