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