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>
posted @ 2019-10-22 09:58  凌137  阅读(425)  评论(0)    收藏  举报