js陣列中indexOf和findIndex的區別

2022-09-19 09:00:10 字數 2287 閱讀 5347

1. indexof

arr.indexof(searchelement[, fromindex])

searchelement要查詢的元素

fromindex可選

開始查詢的位置。如果該索引值大於或等於陣列長度,意味著不會在陣列裡查詢,返回-1。如果引數中提供的索引值是乙個負值,則將其作為陣列末尾的乙個抵消,即-1表示從最後乙個元素開始查詢,-2表示從倒數第二個元素開始查詢 ,以此類推。 注意:如果引數中提供的索引值是乙個負值,並不改變其查詢順序,查詢順序仍然是從前向後查詢陣列。如果抵消後的索引值仍小於0,則整個陣列都將會被查詢。其預設值為0.

2. findindex

arr.findindex(callback[, thisarg])

callback針對陣列中的每個元素, 都會執行該**函式, 執行時會自動傳入下面三個引數:element當前元素。

index當前元素的索引。

array呼叫findindex的陣列。

3. 兩者之間的區別

(1) 使用方式

indexof傳入引數為待查詢元素,findindex傳入引數為自定義函式

(2)適用範圍

雖然indexof與findindex都可用以查詢元素,但findindex比indexof使用更靈活,適用範圍更廣

例如,我們可以自定義findindex的查詢函式,使其查詢值時忽略大小寫、強轉型別比較,甚至可以查詢值相同的引用型別,以下舉例詳細說明

a. 忽略大小寫

const arr = [1, '2', 'test', ]

const findval = 'test'

console.log(arr.indexof(findval)) // -1

console.log(arr.findindex(val => )) // 2

b. 型別強轉

const arr = [1, '2', 'test', ]

const findval = 2

console.log(arr.indexof(findval)) // -1

console.log(arr.findindex(val => val == findval)) // 1

c. 查詢值相同的引用型別

const arr = [1, '2', 'test', ]

const findval =

console.log(arr.indexof(findval)) // -1

console.log(arr.findindex(val => compare(val, findval))) // 3

/*** @name 兩值比較

* @param obj1 值1

* @param obj2 值2

* @returns true 相等 false 不等

*/export function compare (obj1, obj2)

const obj1_keys = object.keys(obj1)

const obj2_keys = object.keys(obj2)

if (obj1_keys.length !== obj2_keys.length) return false

return obj1_keys.every(k => compare(obj1[k], obj2[k]))

}/**

* @name 獲取資料型別

* @param val 資料

* @returns 資料型別

* boolean 布林值, number 數, string 字串,

* undefined, null, array 陣列, object 物件,

* function 函式, symbol, set set型別, map map型別

*/export function getdatatype (val)

return rules[object.prototype.tostring.call(val)]

}

js陣列中的indexof()方法

indexof 語法 arrayobject.indexof searchvalue,startindex 功能 從陣列的開頭 位置0 開始向後查詢。引數 searchvalue 必需,要查詢的項 startindex 可選,起點位置的索引。返回值 number,查詢的項在陣列中的位置,沒有找到的情...

JS中的indexOf方法

indexof 是js中內建的方法之一,它的功能大家都很熟悉 簡單來說就是得到資料的索引,對於正則不熟練的人,是個很不錯的方法。如果查詢到返回索引,反之返回 1 固定用法 因為indexof 在不同型別使用的時候可能有細節性的注意點 這裡我們對不同資料型別使用indexof的場景進行討論 其實就是s...

JS中的indexof 解釋

indexof 方法可返回某個指定的字串值在字串中首次出現的位置。stringobject.indexof searchvalue,fromindex 該方法將從頭到尾地檢索字串 stringobject,看它是否含有子串 searchvalue。開始檢索的位置在字串的 fromindex 處或字串...