javascript数组求和与split方法
题目描述
计算给定数组 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>

浙公网安备 33010602011771号