JavaScript 數組搜索
數組查找和搜索方法
- Array indexOf()
- Array lastIndexOf()
- Array includes()
- Array find()
- Array findIndex()
- Array findLast()
- Array findLastIndex()
另請參閱:
JavaScript Array indexOf()
indexOf()
方法在數組中搜索元素值并返回其位置。
注意:第一項的位置是 0,第二項的位置是 1,依此類推。
實例
在數組中搜索項 "Apple":
const fruits = ["Apple", "Orange", "Apple", "Mango"]; let position = fruits.indexOf("Apple") + 1;
語法
array.indexOf(item, start)
item | 必需。要搜索的項。 |
start | 可選。搜索的起始位置。負值將從數組末尾開始計數,并搜索到末尾。 |
返回值:
- 如果未找到項,則返回 -1。
- 如果項出現多次,則返回第一次出現的位置。
JavaScript Array lastIndexOf()
lastIndexOf()
方法與 indexOf()
相同,但返回指定元素最后一次出現的位置。
實例
在數組中搜索項 "Apple":
const fruits = ["Apple", "Orange", "Apple", "Mango"]; let position = fruits.lastIndexOf("Apple") + 1;
語法
array.lastIndexOf(item, start)
item | 必需。要搜索的項。 |
start | 可選。搜索的起始位置。負值將從數組末尾開始計數,并搜索到開頭。 |
JavaScript Array includes()
ECMAScript 2016 引入了 Array.includes()
方法。它允許我們檢查數組中是否包含某個元素(包括 NaN,與 indexOf 不同)。
實例
const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.includes("Mango"); // 返回 true
語法
array.includes(search-item)
search-item:要搜索的元素。
注意:includes()
可以檢查 NaN 值,而 indexOf()
不能。
瀏覽器支持
includes()
是 ECMAScript 2016 的特性。
自 2017 年 3 月起,所有現代瀏覽器均支持 ES2016:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 52 | Edge 15 | Firefox 52 | Safari 10.1 | Opera 39 |
2016 年 7 月 | 2017 年 4 月 | 2017 年 3 月 | 2017 年 5 月 | 2016 年 8 月 |
Internet Explorer 不支持 includes()。
JavaScript Array find()
find()
方法返回通過測試函數的第一個數組元素的值。
實例
查找第一個大于 18 的元素:
const numbers = [4, 9, 16, 25, 29]; let first = numbers.find(myFunction); function myFunction(value, index, array) { return value > 18; }
注意:函數接受 3 個參數:
- 元素值
- 元素索引
- 數組本身
瀏覽器支持
find()
是 ES6(JavaScript 2015)的特性。
自 2017 年 6 月起,所有現代瀏覽器均支持 ES6:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
2016 年 5 月 | 2017 年 4 月 | 2017 年 6 月 | 2016 年 9 月 | 2016 年 6 月 |
Internet Explorer 不支持 find()
。
JavaScript Array findIndex()
findIndex()
方法返回通過測試函數的第一個數組元素的索引。
實例
查找第一個大于 18 的元素的索引:
const numbers = [4, 9, 16, 25, 29]; let first = numbers.findIndex(myFunction); function myFunction(value, index, array) { return value > 18; }
注意:函數接受 3 個參數:
- 元素值
- 元素索引
- 數組本身
瀏覽器支持
findIndex()
是 ES6(JavaScript 2015)的特性。
自 2017 年 6 月起,所有現代瀏覽器均支持 ES6:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
2016 年 5 月 | 2017 年 4 月 | 2017 年 6 月 | 2016 年 9 月 | 2016 年 6 月 |
Internet Explorer 不支持 findIndex()
。
JavaScript Array findLast()
ES2023 新增了 findLast()
方法,它從數組末尾開始搜索,并返回滿足條件的第一個元素的值。
實例
const temp = [27, 28, 30, 40, 42, 35, 30]; let high = temp.findLast(x => x > 40);
瀏覽器支持
findLast()
是 ES2023 的特性。
自 2023 年 7 月起,所有現代瀏覽器均支持:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 110 | Edge 110 | Firefox 115 | Safari 16.4 | Opera 96 |
2023 年 2 月 | 2023 年 2 月 | 2023 年 7 月 | 2023 年 3 月 | 2023 年 5 月 |
JavaScript Array findLastIndex() Method
findLastIndex()
方法查找滿足條件的最后一個元素的索引。
實例
const temp = [27, 28, 30, 40, 42, 35, 30]; let pos = temp.findLastIndex(x => x > 40);
瀏覽器支持
findLastIndex()
是 ES2023 的特性。
自 2023 年 7 月起,所有現代瀏覽器均支持:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 110 | Edge 110 | Firefox 115 | Safari 16.4 | Opera 96 |
2023 年 2 月 | 2023 年 2 月 | 2023 年 7 月 | 2023 年 3 月 | 2023 年 5 月 |
完整的數組參考手冊
如需完整的數組參考,請訪問:JavaScript 數組參考手冊。
該手冊包含所有數組屬性和方法的描述和實例。