MST

星途 面试题库

面试题:JavaScript数组元素读写优化之常规场景

在JavaScript中,假设有一个包含1000个数字的数组`let arr = Array.from({length: 1000}, (_, i) => i + 1)`,现在需要将数组中所有能被3整除的元素值翻倍,并在操作完成后获取数组的总和。请使用你认为优化后的代码实现,并解释你优化的思路。
44.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
let arr = Array.from({length: 1000}, (_, i) => i + 1);
let sum = arr.reduce((acc, num) => {
    if (num % 3 === 0) {
        num *= 2;
    }
    return acc + num;
}, 0);
console.log(sum);

优化思路

  1. 避免中间数组:没有先创建一个新数组存储翻倍后的元素,而是在遍历数组时直接计算总和。使用reduce方法可以在遍历数组的同时进行累加操作,减少了额外的空间开销。
  2. 单次遍历:整个操作仅需一次遍历数组,时间复杂度为O(n),n为数组的长度。这样相较于先过滤出能被3整除的元素,翻倍后再求和的多次遍历操作,效率更高。