第一种eval()+join()
eval()
函数计算或执行参数。
如果参数是表达式,则 eval()
计算表达式。如果参数是一个或多个 JavaScript 语句,则 eval()
执行这些语句。
join() 方法用于把数组中的所有元素转换一个字符串。
元素是通过指定的分隔符进行分隔的。
这个方法的思路就是把数组转化为一个字符串表达式然后使用eval()方法求和
function sum(arr) { return eval(arr.join('+')) }
第二种for循环
function sum(arr) { let num = 0; for(let i=0;i<arr.length;i++){ num = num+arr[i] } return num; }
第三种foreach()
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
forEach(): 没有返回值,本质上等同于 for 循环,对每一项执行 function 函数。即map是返回一个新数组,原数组不变,forEach 是不改变原数组(尽管回调函数 callbackFn 在被调用时可能会改变原数组)。
不支持 continue,用 return false 或 return true 代替。
不支持 break,用 try catch/every/some 代替。
function sum(arr) { let s = 0; arr.forEach(item => s += item); return s; }
第四种for in(常用于循环对象而且还是对象的属性)
for/in 语句用于循环对象属性。
循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
function sum(arr) { let s = 0; for(let i in arr) { s += arr[i]; } return s; }
第五种 for of(常用于循环对象,但是这个是循环对象的值)
- for/of - 循环遍历可迭代对象的值
function sum(arr) { let s = 0; for(let i of arr) { s += i; } return s; }
第六种 reduce()
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
function sum(arr) { return arr.reduce((x, y) => x+y); }