一、題面分析:需要寫一個函數,接收兩個參數,第一個參數為一個數組,第二個參數為需要查出位置的元素。
二、數組相關知識回顧。
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;
}
}
