[Medium] LeetCode JS 30 - 2695. Array Wrapper (阵列封装)
2024年3月6日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
LeetCode 30 Days of JavaScript
This question is from LeetCode's 30 Days of JavaScript Challenge
2695. Array Wrapper (阵列封装)题目描述
实作一个名为 ArrayWrapper
的类别,其建构函式会接受一个整数阵列作为参数。该类别应具有以下两个特性:
- 当使用
+
运算子将两个该类别的实例相加时,结果值为两个阵列中所有元素的总和。 - 当在实例上呼叫
String()
函式时,它会回传一个由逗号分隔的的字串,并且最外面会有中括号括起来。例如[1,2,3]
。
// 范例1:
输入: nums = [[1,2],[3,4]], operation = "Add"
输出: 10
解释:
const obj1 = new ArrayWrapper([1,2]);
const obj2 = new ArrayWrapper([3,4]);
obj1 + obj2; // 10
// 范例2:
输入: nums = [[23,98,42,70]], operation = "String"
输出: "[23,98,42,70]"
解释:
const obj = new ArrayWrapper([23,98,42,70]);
String(obj); // "[23,98,42,70]"
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习
解法一
ArrayWrapper.prototype.toString = function () {
return `[${this.nums.join(",")}]`;
};
解法二
class ArrayWrapper {
constructor(nums) {
this.nums = nums
}
valueOf() {
return this.nums.reduce((sum, num) => sum + num, 0))
}
toString() {
return `[${this.nums.join(',')}]`;
}
}