查找:上代碼.
function isBigEnough(element) { return element >= 15; } var ret1 = [12, 5, 8, 130, 44].findIndex(isBigEnough); console.log(ret1); // index of 4th element in the Array is returned, // so this will result in '3' var objArr = [{id:1, name:'jiankian'}, {id:23, name:'anan'}, {id:188, name:'superme'}, {id:233, name:'jobs'}, {id:288, name:'bill', age:89}, {id:333}] ; var ret2 = objArr.findIndex((v) => { return v.id == 233; }); console.log(ret2); // return 3
findIndex()
方法返回數組中滿足提供的測試函數的第一個元素的索引。否則返回-1。
語法:
arr.findIndex(callback[, thisArg])
參數:
callback
針對數組中的每個元素, 都會執行該回調函數, 執行時會自動傳入下面三個參數:
-
element
- 當前元素。
-
index
- 當前元素的索引。
-
array
-
調用
findIndex
的數組。
thisArg
可選。執行callback
時作為this
對象的值.
描述:
findIndex
方法對數組中的每個數組索引0..length-1
(包括)執行一次callback
函數,直到找到一個callback
函數返回真實值(強制為true
)的值。如果找到這樣的元素,findIndex
會立即返回該元素的索引。如果回調從不返回真值,或者數組的length
為0,則findIndex
返回-1。 與某些其他數組方法(如Array#some)不同,在稀疏數組中,即使對於數組中不存在的條目的索引也會調用回調函數。
回調函數調用時有三個參數:元素的值,元素的索引,以及被遍歷的數組。
如果一個 thisArg
參數被提供給 findIndex
, 它將會被當作this
使用在每次回調函數被調用的時候。如果沒有被提供,將會使用undefined
。
findIndex
不會修改所調用的數組。
在第一次調用callback
函數時會確定元素的索引范圍,因此在findIndex
方法開始執行之后添加到數組的新元素將不會被callback
函數訪問到。如果數組中一個尚未被callback
函數訪問到的元素的值被callback
函數所改變,那么當callback
函數訪問到它時,它的值是將是根據它在數組中的索引所訪問到的當前值。被刪除的元素仍然會被訪問到。
示例
查找數組中首個質數元素的索引
以下示例查找數組中素數的元素的索引(如果不存在素數,則返回-1)。
function isPrime(element, index, array) { var start = 2; while (start <= Math.sqrt(element)) { if (element % start++ < 1) { return false; } } return element > 1; } console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, not found console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
刪除:上代碼.
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; myFish.splice(2, 0, 'drum'); // 在索引為2的位置插入'drum' // myFish 變為 ["angel", "clown", "drum", "mandarin", "sturgeon"] myFish.splice(2, 1); // 從索引為2的位置刪除一項(也就是'drum'這一項) // myFish 變為 ["angel", "clown", "mandarin", "sturgeon"]
語法
array.splice(start) array.splice(start, deleteCount) array.splice(start, deleteCount, item1, item2, ...)
參數
-
start
- 指定修改的開始位置(從0計數)。如果超出了數組的長度,則從數組末尾開始添加內容;如果是負值,則表示從數組末位開始的第幾位(從-1計數);若只使用start參數而不使用deleteCount、item,如:array.splice(start) ,表示刪除[start,end]的元素。
-
deleteCount
可選 -
整數,表示要移除的數組元素的個數。如果
deleteCount
是 0,則不移除元素。這種情況下,至少應添加一個新元素。如果deleteCount
大於start
之后的元素的總數,則從start
后面的元素都將被刪除(含第start
位)。 - 如果deleteCount被省略,則其相當於(arr.length - start)。
-
item1, item2, ...
可選 -
要添加進數組的元素,從
start
位置開始。如果不指定,則splice()
將只刪除數組元素。
splice方法使用deleteCount參數來控制是刪除還是添加:
start參數是必須的,表示開始的位置(從0計數),如:start=0從第一個開始;start>= array.length-1表示從最后一個開始。
①、從start位置開始刪除[start,end]的元素。
array.splice(start)
②、從start位置開始刪除[start,Count]的元素。
array.splice(start, deleteCount)
③、從start位置開始添加item1, item2, ...元素。
array.splice(start, 0, item1, item2, ...)
返回值
由被刪除的元素組成的一個數組。如果只刪除了一個元素,則返回只包含一個元素的數組。如果沒有刪除元素,則返回空數組。
描述
如果添加進數組的元素個數不等於被刪除的元素個數,數組的長度會發生相應的改變。
提示和注釋
注釋:請注意,splice() 方法與 slice() 方法的作用是不同的,splice() 方法會直接對數組進行修改。
示例
從第2位開始刪除0個元素,插入“drum”
var myFish = ["angel", "clown", "mandarin", "surgeon"]; //從第 2 位開始刪除 0 個元素,插入 "drum" var removed = myFish.splice(2, 0, "drum"); //運算后的 myFish:["angel", "clown", "drum", "mandarin", "surgeon"] //被刪除元素數組:[],沒有元素被刪除
從第3位開始刪除1個元素
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; var removed = myFish.splice(3, 1); //運算后的myFish:["angel", "clown", "drum", "sturgeon"] //被刪除元素數組:["mandarin"]
從第2位開始刪除1個元素,然后插入“trumpet”
var myFish = ['angel', 'clown', 'drum', 'sturgeon']; var removed = myFish.splice(2, 1, "trumpet"); //運算后的myFish: ["angel", "clown", "trumpet", "surgeon"] //被刪除元素數組:["drum"]
從第0位開始刪除2個元素,然后插入"parrot","anemone"和"blue"
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']; var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); // 運算后的myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"] // 被刪除元素數組:["angel", "clown"]
從第2位開始刪除2個元素
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']; var removed = myFish.splice(myFish.length - 3, 2); // 運算后的myFish: ["parrot", "anemone", "sturgeon"] // 被刪除元素數組:["blue", "trumpet"]
從第2位開始刪除所有元素
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; var removed = myFish.splice(2); // 運算后的myFish :["angel", "clown"] // 被刪除的元素數組: ["mandarin", "sturgeon"]