第1题
题目描述
找出元素 item 在给定数组 arr 中的位置
输出描述: 如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
示例1
输入:[ 1, 2, 3, 4 ], 3
输出:2
解决方案有以下三种:
第一种:
function indexOf(arr,item){
return arr.indexOf(item);
}是的,indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。第二种:如果浏览器不支持indexOf怎么办呢?
function indexOf(arr, item) {
if (Array.prototype.indexOf){ //判断当前浏览器是否支持
return arr.indexOf(item);
} else {
for (var i = 0; i < arr.length; i++){
if (arr[i] === item){
return i; } } }
return -1; //总是把return -1暴漏在最外层 }
是的,第二种方法是考虑很周全的。
第2题
题目描述
计算给定数组 arr 中所有元素的总和
输入描述:数组中的元素均为 Number 类型
输入
[ 1, 2, 3, 4 ]输出
10常规循环:
function sum(arr) { var s = 0; for (var i=arr.length-1; i>=0; i--) { s += arr[i]; } return s;}函数式编程 map-reduce:
function sum(arr) { return arr.reduce(function(prev, curr, idx, arr){ return prev + curr; });}forEach遍历:
function sum(arr) { var s = 0; arr.forEach(function(val, idx, arr) { s += val; }, 0); return s;};eval:
function sum(arr) { return eval(arr.join("+"));};