【问题标题】:Custom class that returns an array given start and end parameters in javascript在javascript中返回给定开始和结束参数的数组的自定义类
【发布时间】:2021-02-08 20:33:47
【问题描述】:

我想创建一个“自定义数组”,它接受开始和结束索引并从中生成一个数组。我对 javascript 类的了解相当有限,但我对 Java 相当了解。我不知道如何扩展一个类(我一直收到错误)所以我想出了以下内容:

class RangedArray{
constructor(startNum, endNum){
    this.startNum = startNum;
    this.endNum = endNum;
    this.timeslot = this.createTimeslot();
}

createTimeslot(){
    let index = 0;
    let arr = [];
    for (let num = this.startNum; num <= this.endNum; num++) {
        arr[index] = num;
        index++;
    }
    return arr;
}
}

这段代码做我想做的事,但是如果我想访问我的数组,我必须做这样的事情

let obj = new RangedArray(4, 21);
let timeslot1 = obj.timeslot;

理想的做法是在一行中执行此操作。我的意思是我希望能够像使用它一样

let obj = new RangedArray(4, 21);
obj[0] = 1;

就像我说的,我认为这可以通过扩展 Array 类来完成,但我不知道该怎么做。我基本上想覆盖 RangedArray 类中的常规数组构造函数。那么我需要做什么才能获得这个功能呢?

【问题讨论】:

    标签: javascript arrays class


    【解决方案1】:

    这里不需要一个类,它只会让事情变得不必要的复杂。改用标准函数,构造并返回您需要的普通数组:

    const makeRangedArray = (startNum, endNum) => {
        const arr = [];
        for (let num = startNum, index = 0; num <= endNum; num++, index++) {
            arr[index] = num;
        }
        return arr;
    }
    const arr = makeRangedArray(4, 21);
    arr[0] = 999;
    console.log(arr);

    【讨论】:

      【解决方案2】:

      我同意前面的评论。你不需要为此使用类,我认为一个非常优雅的方式是这样写:

          const makeRangedArray = (start, end, length = end - start + 1) =>
              Array.from({ length }, (_, i) => start + i)
      
          const arr = makeRangedArray(4, 21);
          arr[0] = 999;
          console.log(arr);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        • 2013-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多