一、题面分析:需要写一个函数,接收两个参数,第一个参数为一个数组,第二个参数为需要查出位置的元素。
二、数组相关知识回顾。
1,数组有哪些方法。
(1)转换方法。将数组中的每个值的字符串形式以逗号组合在一起。
a、toString
b、toLocalString
c、valueOf
(2)栈方法。遵循先进后出的规则。
a、push:将元素加入数组末尾,并返回新数组的长度。可以接受不止一个的元素。
b、pop:将数组的最后一个元素移除,并返回该元素
(3)队列方法。遵循先进先出的规则。
a、shift:将数组的第一个元素移除,并返回该元素
b、unshift:将元素加入数组的开头,并返回新数组的长度。可以接收不止一个的元素。
(4)重排序方法。都返回重新排序的数组
a、reverse:反转数组的排列。
b、sort:升序排列数组,会调用每个元素的toString方法,照字符串从小到大排序,(可以接收一个函数作为参数。实现数学中的排序。比如compare(),前大后小返回1,前小后大返回正数,一样大返回0)
(5)操作方法。
a、concat:该方法首先会复制当前数组,再将接收到的参数加入复制数组末尾,返回新数组。
b、slice:该方法可以接受一个或者两个参数。接受一个参数,该参数代表新数组的起始位置,返回起始位置到数组末尾的新数组。接收两个参数,第一个参数代表新数组起始位置,第二个位置代表新数组结束位置。注:该函数的参数都可以是负数,负数参数加上数组的长度合成新参数,如果起始位置参数大于结束位置参数,则返回空数组。
c、splice:该方法是数组醉强大的方法。非常重要。共有3个作用,可以接受2或者3个参数。
1,删除,接受两个参数。第一个参数为起始位置,第二个参数为要删除的元素数量。
2,插入,接受三个参数。第一个参数为起始位置,第二个参数为删除的元素数量0,第三个参数为要插入的元素(可以接收多个,逗号隔开)。
3,替换,接收三个参数。第一个参数为起始位置,第二个参数为要删除的元素数量,第三个参数为要插入的元素。
(6)位置方法。ES5才出的新方法,兼容IE9以上浏览器
a:indexOf:可以接收两个参数,第一个参数为要查询位置的元素,第二个参数为开始位置(从前数)。如果查不到则返回-1。
b,lastIndexOf :接收两个参数,第一个为起始位置,第二个为开始位置(从后数)。如果查不到则返回-1。
(7)迭代方法。ES5新出的5个方法,每个方法都接收两个参数,第一个参数为要在每一项上运行的函数,第二个参数为该函数的作用域对象。
a,every:第一个参数为要对每个项运行的函数,如果每一项都返回ture,则该方法返回ture。
b,filter:第一个参数为要对每个项运行的函数,返回值为每一项返回ture的元素组成的数组。
c,foreach,第一个参数为要运行的函数,改方法没有返回值。
d,map:第一个参数为要运行的函数,返回每一项运行后返回值组成的数组。
e,some:第一个参数为要运行的函数,有一项返回ture则返回ture。
(8)归并方法。ES5新出的方法。可以接收两个参数,第一个参数为要对每个项调用的函数,该参数函数接收4个参数,1,前一个值,2,当前值,3,项的索引,4,数组对象(array),第二个参数为归并基础的初始值。
a,reduce:从数组第一项开始遍历。
b,reduceRight:从数组最后一项开始遍历。
三,根据题面,确定使用数组的位置方法,indexOf或者lastIndexOf。该方法是ES5新出的方法因此需要分情况。定义位置方法 function indexOf(arr,item){};
1,浏览器支持该方法,能力检测。不使用浏览器判断
if(Array.prototype.indexOf){
arr.indexOf(item);
}
2,浏览器不支持该方法。
var i=0;
for(i;i<=arr.length;i++){
if(arr[i]==item){return i;}
else {
return -1;
}
}