[Medium] LeetCode JS 30 - 2695. Array Wrapper (陣列封裝)
2024年3月6日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
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(',')}]`;
}
}