如何扩展javascript数组类?

时间:2018-10-03 19:28:37

标签: javascript

我正在尝试扩展Array类以向其添加Sum方法。这是下面的代码,我在做什么错?

Class tipArray extends Array{
    sum(values) {
        for(i in values) {
            total +=i;
        }
    }
}

var testArray = new tipArray();
testArray = [1,2,3,4];
console.log(testArray.sum());

预期输出= 10

2 个答案:

答案 0 :(得分:3)

  1. 首先想象一下如何对数组求和(也许用reduce来求和)。
  2. 将其转换为功能。
  3. 将其添加为类中的方法。您可以使用this来引用数组。
  4. (可选)问自己是否真的需要一个子类而不是一个接受数组的函数。

class tipArray extends Array{
    sum() {
        // Consider making sure the array contains items where sum makes sense here.
        return this.reduce((sum, current) => sum + current)
    }
}

var testArray = new tipArray(1,2,3,4);
console.log(testArray.sum());

// add another element and take another sum
testArray.push(10)
console.log(testArray.sum());

答案 1 :(得分:0)

class tipArray extends Array {
    sum() {
        let val = 0;

        for (let i = 0; i < this.length; i++) {
            val += this[i];
        }

        return val;
    }
}

var testArray = new tipArray(1, 2, 3, 4);
console.log(testArray.sum());
console.log(testArray.length);

sum方法内部,您通过this引用数组。