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

题目解析

原题链接: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方法,并返回其结果。

你可能感兴趣的:(LeetCode,JavaScript,leetcode,javascript,算法)