返回

前端刷题:用JavaScript轻松实现「加一」操作

前端

在前端开发中,我们经常需要处理数字相关的问题。其中,一个常见且基础的操作就是给定一个由整数组成的数组,对数组中每个元素进行加一操作。本文将介绍如何使用JavaScript来实现这个看似简单的「加一」操作。

理解问题

给定一个整数数组,我们的目标是将其中的每个元素加一。例如:

  • 给定数组 [1, 2, 3],加一后变为 [2, 3, 4]。
  • 给定数组 [9, 9, 9],加一后变为 [1, 0, 0, 0](因为溢出了)。

JavaScript 实现

方法一:使用循环逐个加一

最直接的方法是使用循环逐个对数组中的元素进行加一操作。代码如下:

function plusOne(arr) {
  for (let i = 0; i < arr.length; i++) {
    arr[i]++;
  }
  return arr;
}

方法二:利用 map 函数加一

ES6中的 map 函数可以一次性对数组中的每个元素进行映射操作,因此我们可以利用它来实现「加一」操作。代码如下:

function plusOne(arr) {
  return arr.map(num => num + 1);
}

考虑溢出情况

在某些情况下,加一操作可能会导致溢出,即数组中的某个元素加一后超过了其最大值。此时,我们需要考虑进位的情况。

方法一:使用循环进行进位

function plusOne(arr) {
  let carry = 1; // 进位标志
  for (let i = arr.length - 1; i >= 0; i--) {
    let sum = arr[i] + carry;
    carry = sum >= 10 ? 1 : 0;
    arr[i] = sum % 10;
  }
  // 若最终还有进位,则需要在数组最前面添加 1
  if (carry) {
    arr.unshift(1);
  }
  return arr;
}

方法二:利用 carry 变量

function plusOne(arr) {
  let carry = 0;
  for (let i = arr.length - 1; i >= 0; i--) {
    arr[i] += carry;
    carry = arr[i] >= 10 ? 1 : 0;
    arr[i] %= 10;
  }
  if (carry) {
    arr.unshift(1);
  }
  return arr;
}

总结

通过本文介绍的几种方法,我们可以在JavaScript中轻松实现「加一」操作。需要注意的是,溢出情况需要特殊处理,以保证操作的正确性。无论您选择哪种方法,都要根据实际场景进行合理选择。