查找数组元素位置


 

一、题面分析:需要写一个函数,接收两个参数,第一个参数为一个数组,第二个参数为需要查出位置的元素。

二、数组相关知识回顾。

  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;

}

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM