[Medium] LeetCode JS 30 - 2695. Array Wrapper (陣列封裝)

2024年3月6日

💎 加入 E+ 成長計畫 與超過 300+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

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+ 成長計畫看到

解法一

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(',')}]`;
	}
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們