牛课网js刷题

166 阅读1分钟

第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("+"));};