JS数组求和的常用方法总结【5种方法】

本文详细介绍了五种实现JS数组求和的方法,包括递归、常规循环、函数式编程map-reduce、forEach遍历及eval方法。每种方法都附有代码示例,适合不同需求和场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例总结了JS数组求和的常用方法。分享给大家供大家参考,具体如下:

题目描述

计算给定数组 arr 中所有元素的总和

输入描述:

数组中的元素均为 Number 类型

输入例子:

sum([ 1, 2, 3, 4 ])

输出例子:

10

方法1. 不考虑算法复杂度,用递归做:

function sum(arr) {
  var len = arr.length;
  if(len == 0){
    return 0;
  } else if (len == 1){
    return arr[0];
  } else {
    return arr[0] + sum(arr.slice(1));
  }
}

方法2. 常规循环:

function sum(arr) {
  var s = 0;
  for (var i=arr.length-1; i>=0; i--) {
    s += arr[i];
  }
  return s;
}

方法3. 函数式编程 map-reduce:

function sum(arr) {
  return arr.reduce(function(prev, curr, idx, arr){
    return prev + curr;
  });
}

方法4. forEach遍历:

function sum(arr) {
  var s = 0;
  arr.forEach(function(val, idx, arr) {
    s += val;
  }, 0);
  
  return s;
};

方法5. eval:

function sum(arr) {
  return eval(arr.join("+"));
};
//测试输出运行结果:
console.log(sum([ 1, 2, 3, 4 ]))

转载:https://www.jb51.net/article/154559.htm

### JavaScript 数组常用方法及其使用 #### 添加元素 `push()` 向数组的末尾添加一个或多个元素,并返回新的数组长度。此操作会改变原始数组[^1]。 ```javascript let array = [1, 2, 3]; array.push(4); console.log(array); // 输出: [1, 2, 3, 4] ``` #### 移除元素 `pop()` 方法移除数组中的最后一个元素并返回该元素。同样地,这也会更改原来的数组[^2]。 ```javascript let numbers = [10, 20, 30]; numbers.pop(); console.log(numbers); // 输出: [10, 20] ``` #### 截取子数组 `slicе()` 方法用于提取给定索引范围内的元素,创建并返回一个新的数组对象。值得注意的是,这个过程不会影响原有的数组;而且当提供负数值作为参数时,它代表从末端开始计数的位置[^4]。 ```javascript const fruits = ['apple', 'banana', 'cherry']; console.log(fruits.slice(1)); // 输出: ["banana", "cherry"] console.log(fruits.slice(-2)); // 输出: ["banana", "cherry"] ``` #### 遍历与映射 `forEach()` 对于遍历整个数组很有帮助,而 `map()` 则允许基于现有数组创建新数组,其中每个元素都是通过调用提供的函数处理后的结果[^5]。 ```javascript // forEach 示例 [1, 2, 3].forEach(item => console.log(item)); // map 示例 const doubled = [1, 2, 3].map(x => x * 2); console.log(doubled); // 输出: [2, 4, 6] ``` #### 过滤条件匹配项 `filter()` 创建一个包含所有满足测试函数条件的新数组实例。这对于筛选特定的数据集特别有用。 ```javascript const evenNumbers = [1, 2, 3, 4, 5].filter(num => num % 2 === 0); console.log(evenNumbers); // 输出: [2, 4] ``` #### 转换为单一值 `reduce()` 接受一个累加器和当前值作为回调函数的输入,在每次迭代中累积计最终的结果。对于求和或者聚合运非常适合。 ```javascript const sum = [1, 2, 3, 4].reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // 输出: 10 ``` #### 查找单个元素 `find()` 返回第一个符合条件的数组成员,如果没有找到则返回 undefined。与此相似还有 `findIndex()` ,区别在于后者给出的是首次出现的目标元素下标而非其本身。 ```javascript const user = [{id: 1}, {id: 2}]; console.log(user.find(u => u.id === 2)); // 输出: Object { id: 2 } console.log(user.findIndex(u => u.id === 2)); // 输出: 1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值