JavaScript 數組搜索

數組查找和搜索方法

另請參閱:

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 數組參考手冊

該手冊包含所有數組屬性和方法的描述和實例。