题目解析
原题链接:https://leetcode.cn/problems/array-wrapper/
题目要求我们创建一个名为ArrayWrapper
的类,该类在构造函数中接受一个整数数组作为参数。该类应具有以下两个特性:
- 当使用 + 运算符将两个该类的实例相加时,结果值为两个数组中所有元素的总和。
- 当在实例上调用
String()
函数时,它将返回一个由逗号分隔的括在方括号中的字符串。
解题思路
我们可以通过定义一个类,并在类的原型上添加valueOf
和toString
方法来实现这个功能。valueOf
方法用于计算数组中所有元素的总和,toString
方法用于返回数组的字符串表示形式。
代码实现
/**
* @param {number[]} nums
*/
var ArrayWrapper = function(nums) {
// 在构造函数中,我们接受一个数组并将其存储在实例的属性中
this.nums = nums;
};
// valueOf方法返回数组中所有元素的总和
ArrayWrapper.prototype.valueOf = function() {
return this.nums.reduce((prev, curr) => {
return prev + curr;
}, 0);
};
// toString方法返回数组的字符串表示形式
ArrayWrapper.prototype.toString = function() {
return `[${this.nums.toString()}]`;
};
代码解释
在这个解法中,我们首先定义了一个名为ArrayWrapper
的类,并在构造函数中接受一个数组并将其存储在实例的属性中。
然后,我们在ArrayWrapper
的原型上定义了valueOf
和toString
方法。valueOf
方法使用reduce
函数来计算数组中所有元素的总和,toString
方法返回一个由逗号分隔的括在方括号中的字符串。
当我们使用 + 运算符将两个ArrayWrapper
的实例相加时,JavaScript会自动调用valueOf
方法,并将其结果相加。当我们在ArrayWrapper
的实例上调用String()
函数时,JavaScript会自动调用toString
方法,并返回其结果。
网友评论