Array.prototype.findIndex()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itโs been available across browsers since โจ2015ๅนด9ๆโฉ.
findIndex()
ๆนๆณ่ฟๅๆฐ็ปไธญๆปก่ถณๆไพ็ๆต่ฏๅฝๆฐ็็ฌฌไธไธชๅ
็ด ็็ดขๅผใ่ฅๆฒกๆๆพๅฐๅฏนๅบๅ
็ด ๅ่ฟๅ -1ใ
ๅฆ่ฏทๅ้
find()
ๆนๆณ๏ผๅฎ่ฟๅๆปก่ถณๆต่ฏๅฝๆฐ็็ฌฌไธไธชๅ
็ด ๏ผ่ไธๆฏๅฎ็็ดขๅผ๏ผใ
ๅฐ่ฏไธไธ
const array1 = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
console.log(array1.findIndex(isLargeNumber));
// Expected output: 3
่ฏญๆณ
findIndex(callbackFn)
findIndex(callbackFn, thisArg)
ๅๆฐ
callbackFn
-
ไธบๆฐ็ปไธญ็ๆฏไธชๅ ็ด ๆง่ก็ๅฝๆฐใๅฎๅบ่ฏฅ่ฟๅไธไธช็ๅผไปฅๆ็คบๅทฒๆพๅฐๅน้ ๅ ็ด ๏ผๅฆๅ่ฟๅไธไธชๅๅผใ่ฏฅๅฝๆฐ่ขซ่ฐ็จๆถๅฐไผ ๅ ฅไปฅไธๅๆฐ๏ผ
thisArg
ๅฏ้-
ๆง่ก
callbackFn
ๆถ็จไฝthis
็ๅผใๅ่ง่ฟญไปฃๆนๆณใ
่ฟๅๅผ
ๆฐ็ปไธญ็ฌฌไธไธชๆปก่ถณๆต่ฏๆกไปถ็ๅ
็ด ็็ดขๅผใๅฆๅ่ฟๅ -1
ใ
ๆ่ฟฐ
findIndex()
ๆฏไธ็ง่ฟญไปฃๆนๆณใๅฎๆ็
ง็ดขๅผๅๅบไพๆฌก้ๅๆฐ็ปไธญ็ๆฏไธชๅ
็ด ๏ผๅนถ่ฐ็จๆไพ็ callbackFn
ๅฝๆฐ๏ผ็ดๅฐ callbackFn
่ฟๅไธไธช็ๅผใ็ถๅ findIndex()
่ฟๅ่ฏฅๅ
็ด ็็ดขๅผๅนถๅๆญข้ๅๆฐ็ปใๅฆๆ callbackFn
ไปๆช่ฟๅไธไธช็ๅผ๏ผๅ findIndex()
่ฟๅ -1
ใ
callbackFn
่ขซ่ฐ็จๆฅๅค็ๆฐ็ป็ๆฏไธไธช็ดขๅผ๏ผ่ไธไป
ไป
ๆฏ้ฃไบๆๅผ็็ดขๅผใๅจ็จ็ๆฐ็ปไธญ๏ผๆช่ตๅผ็็ฉบๆงฝไธ undefined
่กจ็ฐ็ธๅใ
findIndex()
ไธไผๆนๅ่ขซ่ฐ็จ็ๆฐ็ป๏ผไฝๆฏๆไพ็ป callbackFn
็ๅฝๆฐๅฏ่ฝไผๆนๅๅฎใไฝ้่ฆๆณจๆ็ๆฏ๏ผๅจ็ฌฌไธๆฌก่ฐ็จ callbackFn
ไนๅ๏ผๆฐ็ป็้ฟๅบฆไผ่ขซไฟๅญใๅ ๆญค๏ผ
- ๅฝ่ฐ็จ
findIndex()
ๆถ๏ผcallbackFn
ไธไผ่ฎฟ้ฎ่ถ ๅบๆฐ็ปๅๅง้ฟๅบฆ็ไปปไฝๅ ็ด ใ - ๅฏนๅทฒ็ป่ฎฟ้ฎ่ฟ็็ดขๅผ็ๆดๆนไธไผๅฏผ่ดๅๆฌกๅจ่ฟไบๅ
็ด ไธ่ฐ็จ
callbackFn
ใ - ๅฆๆ
callbackFn
ๆนๅไบๆฐ็ปไธญๅทฒๅญๅจไฝๅฐๆช่ขซ่ฎฟ้ฎ็ๅ ็ด ๏ผๅไผ ้็ปcallbackFn
็่ฏฅๅ ็ด ็ๅผๅฐๆฏ่ฏฅๅ ็ด ๅจ่ขซ่ฎฟ้ฎๆถ็ๅผใ่ขซๅ ้ค็ๅ ็ด ่ขซ่งไธบundefined
ใ
่ญฆๅ๏ผ ไธ่ฟฐ็ฑปๅ็ๅนถๅไฟฎๆน็ปๅธธๅฏผ่ด้พไปฅ็่งฃ็ไปฃ็ ๏ผ้ๅธธๅบ้ฟๅ ๏ผ็นๆฎๆ ๅต้คๅค๏ผใ
findIndex()
ๆนๆณๆฏ้็จ็ใๅฎๅชๆๆ this
ๅผๅ
ทๆ length
ๅฑๆงๅๆดๆฐ้ฎๅฑๆงใ
็คบไพ
ๅฏปๆพๆฐ็ปไธญ็้ฆไธช็ด ๆฐ็็ดขๅผ
ไปฅไธ็คบไพ่ฟๅๆฐ็ปไธญ็ฌฌไธไธช็ด ๆฐ็็ดขๅผ๏ผๅฆๆๆฒกๆ็ด ๆฐๅ่ฟๅ -1
ใ
function isPrime(n) {
if (n < 2) {
return false;
}
if (n % 2 === 0) {
return n === 2;
}
for (let factor = 3; factor * factor <= n; factor += 2) {
if (n % factor === 0) {
return false;
}
}
return true;
}
console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1๏ผๆฒกๆๆพๅฐ
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2๏ผarray[2] ๆฏ 7๏ผ
ๅคๆณจ๏ผ
isPrime()
ๅฎ็ฐไป
ไพๆผ็คบใๅจๅฎ้
ๅบ็จไธญ๏ผไธบไบ้ฟๅ
้ๅค่ฎก็ฎ๏ผไผไฝฟ็จๅคง้่ฎฐๅฟๅ็็ฎๆณ๏ผไพๅฆๅๆๆๆฏ็นๅฐผ็ญๆณใ
ๅจ็จ็ๆฐ็ปไธไฝฟ็จ findIndex()
ไฝ ๅฏไปฅๆ็ดข็จ็ๆฐ็ปไธญ็ undefined
ๅนถๆฅ่ทๅ็ฉบๆงฝ็็ดขๅผใ
console.log([1, , 3].findIndex((x) => x === undefined)); // 1
ๅจ้ๆฐ็ปๅฏน่ฑกไธ่ฐ็จ findIndex()
findIndex()
ๆนๆณ่ฏปๅ this
็ length
ๅฑๆง๏ผๅนถ่ฎฟ้ฎๆฏไธชๆดๆฐ็ดขๅผใ
const arrayLike = {
length: 3,
0: 2,
1: 7.3,
2: 4,
};
console.log(
Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),
); // 1
่ง่
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # sec-array.prototype.findindex |
ๆต่งๅจๅ ผๅฎนๆง
Loadingโฆ