题目描述
计算给定数组 arr 中所有元素的总和
输入描述:
数组中的元素均为 Number 类型
输入例子:
|
1
|
sum([ 1, 2, 3, 4 ]) |
输出例子:
10
方法1. 不考虑算法复杂度,用递归做:
|
1
2
3
4
5
6
7
8
9
10
|
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. 常规循环:
|
1
2
3
4
5
6
7
|
function sum(arr) {
var s = 0;
for (var i=arr.length-1; i>=0; i--) {
s += arr[i];
}
return s;
} |
方法3. 函数式编程 map-reduce:
|
1
2
3
4
5
|
function sum(arr) {
return arr.reduce(function(prev, curr, idx, arr){
return prev + curr;
});
} |
方法4. forEach遍历:
|
1
2
3
4
5
6
7
8
|
function sum(arr) {
var s = 0;
arr.forEach(function(val, idx, arr) {
s += val;
}, 0);
return s;
}; |
方法5. eval:
|
1
2
3
|
function sum(arr) {
return eval(arr.join("+"));
}; |
|
1
2
|
//测试输出运行结果:console.log(sum([ 1, 2, 3, 4 ])) |
split()方法简单使用:
问题:js 定义的函数sum只在第一次进行了调用,第二次调用时出错,于是重新定义了一下add函数。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>demo1</title>
</head>
<body>
<!-- <p id="demo">单击按钮显示分割后的数组.</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction() {
var str = "How are you doing today?";
var n = str.split(" ");
document.getElementById("demo").innerHTML = n;
}
</script> -->
<script type="text/javascript">
function sum(arr) {
return eval(arr.join(\'+\'));
}
var data = "4.5";
console.log(data)
var arrData = data.split(".");
console.log(arrData)
console.log(arrData[0])
var sum = sum(arrData);
console.log(arrData[0] + arrData[1]);
console.log(sum)
function add(arr) {
return eval(arr.join(\'+\'));
}
var num = 3.6;
var _num = num.toString();
var arrNum = _num.split(".");
console.log(arrNum)
var numSum = add(arrNum);
console.log(numSum);
</script>
</body>
</html>