1.循环 (新手用)
1.1 普通for 循环
简单质朴
const arr = [1, 2, 3, 4, 5];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
1.2 for in 循环
与普通for循环大同小异
const arr = [1, 2, 3, 4, 5];
let sum = 0;
for (let i in arr) {
sum += arr[i];
}
1.3 for of 循环
与for in区别,一个拿索引,一个拿具体值。
const arr = [1, 2, 3, 4, 5];
let sum = 0;
for (let item of arr) {
sum += item;
}
2.数组的API方法(进阶)
2.1 forEach
let sum = 0;
arr.forEach((item) => {
sum += item;
});
2.2 map
可以但没必要,map的规范需要有返回值,不建议使用
let sum = 0;
arr.map((item) => {
sum += item;
});
2.3 reduce
简洁好用,装逼用,最推荐的做法
。
浅浅的解析一下:
reduce方法接收一个带参函数,第一个参数t初始值0,第二个参数表示当前遍历到的值。
return toatal +cur
相当于 total += cur return total
直到把arr遍历完,reduce会结束。
看不懂找详细解析或者就硬记吧。
const sum = arr.reduce((total, cur) => {
return total + cur;
});
3. eval方法
投机取巧,灰常好用。最简洁的方法,不过小心有兼容问题.
原理:eval可以把字符串当表达式执行,并返回执行的结果。
const arr = [1, 2, 3, 4, 5];
const sum = eval(arr.join("+"));
4.递归
可以装逼,捋一捋算法逻辑。不然没必要这么写,最不推荐的方法
。
const arr = [1, 2, 3, 4, 5];
const getSum = (arr, sum = 0) => {
if (arr.length > 0) {
sum += arr[0];
arr.shift();
return getSum(arr, sum);
} else {
return sum;
}
};
const sum = getSum(arr, 0);