Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LeetCode题解:2695. 包装数组,详细解释 #487

Open
chencl1986 opened this issue Nov 21, 2024 · 0 comments
Open

LeetCode题解:2695. 包装数组,详细解释 #487

chencl1986 opened this issue Nov 21, 2024 · 0 comments

Comments

@chencl1986
Copy link
Owner

原题链接

https://leetcode.cn/problems/array-wrapper/

题目解析

题目要求我们创建一个名为ArrayWrapper的类,该类在构造函数中接受一个整数数组作为参数。该类应具有以下两个特性:

  1. 当使用 + 运算符将两个该类的实例相加时,结果值为两个数组中所有元素的总和。
  2. 当在实例上调用String()函数时,它将返回一个由逗号分隔的括在方括号中的字符串。

解题思路

我们可以通过定义一个类,并在类的原型上添加valueOftoString方法来实现这个功能。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的原型上定义了valueOftoString方法。valueOf方法使用reduce函数来计算数组中所有元素的总和,toString方法返回一个由逗号分隔的括在方括号中的字符串。

当我们使用 + 运算符将两个ArrayWrapper的实例相加时,JavaScript会自动调用valueOf方法,并将其结果相加。当我们在ArrayWrapper的实例上调用String()函数时,JavaScript会自动调用toString方法,并返回其结果。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant