题目描述
计算给定数组 arr 中所有元素的总和
输入描述:
数组中的元素均为 Number 类型
示例1
输入
[ 1, 2, 3, 4 ]
输出
10
思路一:大众解法,遍历求和
function sum(arr) {
var sum = 0;
for(var i = 0; i < arr.length; i++){
sum += arr[i];
}
return sum;
}
思路二:不考虑算法复杂度,递归
slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
array.slice(start, end)
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));
}
思路三:forEach遍历
function sum(arr) {
var sum = 0;
arr.forEach(function(val, i){
sum += val;
});
return sum;
}
思路四:eval
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法
eval(string)
join()方法的使用:
- 最简单的将数组的每个元素都转为字符串,如果 join()里面不加任何参数,用法与toString()一样
- 将字符组成单词,意为“无缝拼接”
- 将单词组成句子
- 判断数组是不是空字符数组
- 将数组转化为页面元素的内容,这是join()最为强大的功能
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<select id="sel"></select>
<script>
var sel =document.getElementById("sel");
var array=["北京市","上海市","广州市","深圳市"];
var html="<option>" + array.join("</option><option>")+ "</option>";
sel.innerHTML=html;
</script>
</body>
</html>
function sum(arr) {
return eval(arr.join('+'));
}
思路五:函数式编程 map-reduce
function sum(arr) {
return arr.reduce(function(prev,curr){
return prev+curr;
});
}