Array.prototype.findLast()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itโs been available across browsers since โจ2022ๅนด8ๆโฉ.
findLast()
ๆนๆณๅๅ่ฟญไปฃๆฐ็ป๏ผๅนถ่ฟๅๆปก่ถณๆไพ็ๆต่ฏๅฝๆฐ็็ฌฌไธไธชๅ
็ด ็ๅผใๅฆๆๆฒกๆๆพๅฐๅฏนๅบๅ
็ด ๏ผๅ่ฟๅ undefined
ใ
ๅฆๆไฝ ้่ฆๆพๅฐ๏ผ
- ็ฌฌไธไธชๅน้
็ๅ
็ด ๏ผไฝฟ็จ
find()
ใ - ๆฐ็ปไธญๆๅไธไธชๅน้
ๅ
็ด ็็ดขๅผ๏ผไฝฟ็จ
findLastIndex()
ใ - ๆไธชๅผ็็ดขๅผ๏ผไฝฟ็จ
indexOf()
ใ๏ผๅฎ็ฑปไผผไบfindIndex()
๏ผไฝๆฏไผๆฃๆฅๆฏไธชๅ ็ด ๆฏๅฆไธๅผ็ธ็ญ๏ผ่ไธๆฏไฝฟ็จไธไธชๆต่ฏๅฝๆฐใ๏ผ - ่ฏฅๆฐ็ปไธญๆฏๅฆๅญๅจไธไธชๅผ๏ผไฝฟ็จ
includes()
ใๅๆ ทๅฐ๏ผๅฎๆฃๆฅๆฏไธชๅ ็ด ๆฏๅฆๅๅผ็ธ็ญ๏ผ่ไธๆฏไฝฟ็จไธไธชๆต่ฏๅฝๆฐใ - ๆฏๅฆๆไปปๆไธไธชๅ
็ด ๆปก่ถณๆไพ็ๆต่ฏๅฝๆฐ๏ผไฝฟ็จ
some()
ใ
ๅฐ่ฏไธไธ
const array1 = [5, 12, 50, 130, 44];
const found = array1.findLast((element) => element > 45);
console.log(found);
// Expected output: 130
่ฏญๆณ
findLast(callbackFn)
findLast(callbackFn, thisArg)
ๅๆฐ
callbackFn
-
ๆฐ็ปไธญๆต่ฏๅ ็ด ็ๅฝๆฐใๅ่ฐๅบ่ฏฅ่ฟๅไธไธช็ๅผ๏ผ่กจ็คบๅทฒๆพๅฐๅน้ ็ๅ ็ด ๏ผๅฆๅ่ฟๅไธไธชๅๅผใๅฝๆฐๅจ่ขซ่ฐ็จๆถไผไผ ้ไปฅไธๅๆฐ๏ผ
thisArg
ๅฏ้-
ๆง่ก
callbackFn
ๆถ๏ผ็จไฝthis
็ๅผใ่ฏฆ่ง่ฟญไปฃๆนๆณใ
่ฟๅๅผ
ๆฐ็ปไธญๆปก่ถณๆไพ็ๆต่ฏๅฝๆฐ็ดขๅผๆ้ซ็ๅ
็ด ๏ผๅฆๆๆฒกๆๅ
็ด ๅน้
๏ผ่ฟๅ undefined
ใ
ๆ่ฟฐ
findLast()
ๆฏไธไธช่ฟญไปฃๆนๆณใ่ฏฅๆนๆณๅฏนๆฐ็ปๆฏไธไธชๅ
็ด ๆ้ๅบ๏ผ็ดขๅผไปๅคงๅฐๅฐ๏ผๆง่ก callbackFn
ๅฝๆฐ๏ผ็ดๅฐ callbackFn
่ฟๅไธไธช็ๅผใ็ถๅ findLast()
่ฟๅ่ฏฅๅ
็ด ็ๅผๅนถๅๆญข้ๅๆฐ็ปใๅฆๆ callbackFn
ๆฒกๆ่ฟๅไธไธช็ๅผ๏ผๅ findLast()
่ฟๅ undefined
ใ
callbackFn
ไผ่ขซๆฐ็ปไธญ็ๆฏไธชๅ
็ด ่ฐ็จ๏ผ่ไธไป
ไป
ๆฏ้ฃไบ่ขซ่ตๅผ็ๅ
็ด ใๅฏนไบ็จ็ๆฐ็ปๆฅ่ฏด๏ผ็ฉบๆงฝ่กไธบๅ undefined
็ธๅใ
findLast()
ๆนๆณไธไผๆนๅ่ฐ็จๅฎ็ๆฐ็ป๏ผไฝๆฏๆไพ็ callbackFn
ๅฏไปฅใไฝๆฏ่ฏทๆณจๆ๏ผๆฐ็ป็้ฟๅบฆๆฏๅจ็ฌฌไธๆฌก่ฐ็จ callbackFn
ไนๅไฟๅญ็ใๅ ๆญค๏ผ
callbackFn
ไธไผ่ฎฟ้ฎๅจ่ฐ็จfindLast()
ๅผๅงๅๆๆทปๅ ๅฐๆฐ็ปไธญ็ไปปไฝๅ ็ด ใ- ็ปๅทฒ่ฎฟ้ฎ่ฟ็็ดขๅผ้ๆฐ่ตๅผๅฐไธไผ่ขซ
callbackFn
้ๆฐ่ฎฟ้ฎใ - ๅฆๆ
callbackFn
ๆดๆนไบๆฐ็ปไธญ็ฐๆ็ใๅฐๆช่ฎฟ้ฎ็ๅ ็ด ๏ผๅๅ ถไผ ้็ปcallbackFn
็ๅผๅฐๆฏfindLast()
่ฎฟ้ฎ่ฏฅๅ ็ด ็ดขๅผๆถ็ๅผใๅทฒๅ ้ค็ๅ ็ด ไผ่ขซๅฝๅundefined
ๆฅ่ฎฟ้ฎใ
่ญฆๅ๏ผ ไธไธๆฎตๆ่ฟฐ็ๅนถๅไฟฎๆน็ๆ ๅต็ปๅธธๅฏผ่ด้พไปฅ็่งฃ็ไปฃ็ ๏ผ้ๅธธๅบ่ฏฅ้ฟๅ ๏ผ็นๆฎๆ ๅต้คๅค๏ผใ
findLast()
ๆนๆณๆฏ้็จ็ใๅฎๅชๆๆ this
ๅผๅ
ทๆ length
ๅฑๆงๅๆดๆฐ้ฎ็ๅฑๆงใ
็คบไพ
ๆฅๆพไธๅ ็ด ๅฑๆงๅน้ ็ๆฐ็ปไธญ็ๆๅไธไธชๅฏน่ฑก
ๆญค็คบไพๅฑ็คบไบๅฆไฝๆ นๆฎๆฐ็ปๅ ็ด ็ๅฑๆงๅๅปบๆต่ฏใ
const inventory = [
{ name: "apples", quantity: 2 },
{ name: "bananas", quantity: 0 },
{ name: "fish", quantity: 1 },
{ name: "cherries", quantity: 5 },
];
// ๅบๅญไฝๆถ่ฟๅ true
function isNotEnough(item) {
return item.quantity < 2;
}
console.log(inventory.findLast(isNotEnough));
// { name: "fish", quantity: 1 }
ไฝฟ็จ็ฎญๅคดๅฝๆฐๅ่งฃๆ
ๅ้ข็็คบไพๅฏไปฅไฝฟ็จ็ฎญๅคดๅฝๆฐๅๅฏน่ฑก่งฃๆ้ๅๅฆไธ๏ผ
const inventory = [
{ name: "apples", quantity: 2 },
{ name: "bananas", quantity: 0 },
{ name: "fish", quantity: 1 },
{ name: "cherries", quantity: 5 },
];
const result = inventory.findLast(({ quantity }) => quantity < 2);
console.log(result);
// { name: "fish", quantity: 1 }
ๆฅๆพๆฐ็ปไธญ็ๆๅไธไธช็ด ๆฐ
ไปฅไธ็คบไพๆฅๆพๆฐ็ปไธญ็ๆๅไธไธช็ด ๆฐๅ
็ด ๏ผๅฆๆๆฒกๆ็ด ๆฐ๏ผๅ่ฟๅ undefined
๏ผ๏ผ
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, 12].findLast(isPrime)); // undefined๏ผๆฒกๆๆพๅฐ
console.log([4, 5, 7, 8, 9, 11, 12].findLast(isPrime)); // 11
ๅคๆณจ๏ผ
isPrime()
ๅฎ็ฐไป
ไพๆผ็คบใๅจๅฎ้
ๅบ็จไธญ๏ผไธบไบ้ฟๅ
้ๅค่ฎก็ฎ๏ผไผไฝฟ็จๅคง้่ฎฐๅฟๅ็็ฎๆณ๏ผไพๅฆๅๆๆๆฏ็นๅฐผ็ญๆณใ
ๅจ็จ็ๆฐ็ปไธไฝฟ็จ findLast()
็จ็ๆฐ็ปไธญ็็ฉบๆงฝ่ขซ่ฎฟ้ฎ๏ผๅนถ่ขซ่งไธบ undefined
ใ
// ๅฃฐๆไธไธชๅจ็ดขๅผ 2ใ3 ๅ 4 ๅคๆฒกๆๅ
็ด ็ๆฐ็ป
const array = [0, 1, , , , 5, 6];
// ๆพ็คบๆๆ็็ดขๅผ๏ผไธๅชๅ
ๆฌ้ฃไบ่ขซ่ตๅผ็๏ผ
array.findLast((value, index) => {
console.log(`่ฎฟ้ฎ็ดขๅผ ${index}๏ผๅผไธบ ${value}`);
});
// ่ฎฟ้ฎ็ดขๅผ 6๏ผๅผไธบ 6
// ่ฎฟ้ฎ็ดขๅผ 5๏ผๅผไธบ 5
// ่ฎฟ้ฎ็ดขๅผ 4๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 3๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 2๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 1๏ผๅผไธบ 1
// ่ฎฟ้ฎ็ดขๅผ 0๏ผๅผไธบ 0
// ๆพ็คบๆๆ็็ดขๅผ๏ผๅ
ๆฌๅทฒ่ขซๅ ้ค็๏ผ
array.findLast((value, index) => {
// ๅจ็ฌฌไธๆฌก่ฟญไปฃๆถๅ ้คๅผไธบ 5 ็ๅ
็ด
if (index === 6) {
console.log(`ๅ ้คๅผไธบ array[5]๏ผๅ
ถๅผไธบ ${array[5]}`);
delete array[5];
}
// ๅ
็ด 5 ๅจ่ขซๅ ้คๅ๏ผไปไผ่ขซ่ฎฟ้ฎ
console.log(`่ฎฟ้ฎ็ดขๅผ ${index}๏ผๅผไธบ ${value}`);
});
// ๅ ้คๅผไธบ array[5]๏ผๅ
ถๅผไธบ 5
// ่ฎฟ้ฎ็ดขๅผ 6๏ผๅผไธบ 6
// ่ฎฟ้ฎ็ดขๅผ 5๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 4๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 3๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 2๏ผๅผไธบ undefined
// ่ฎฟ้ฎ็ดขๅผ 1๏ผๅผไธบ 1
// ่ฎฟ้ฎ็ดขๅผ 0๏ผๅผไธบ 0
ๅจ้ๆฐ็ปๅฏน่ฑกไธ่ฐ็จ findLast()
findLast()
ๆนๆณ่ฏปๅ this
็ length
ๅฑๆง๏ผ็ถๅ่ฎฟ้ฎๆฏไธชๆดๆฐ็ดขๅผใ
const arrayLike = {
length: 3,
0: 2,
1: 7.3,
2: 4,
};
console.log(
Array.prototype.findLast.call(arrayLike, (x) => Number.isInteger(x)),
); // 4
่ง่
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # sec-array.prototype.findlast |
ๆต่งๅจๅ ผๅฎนๆง
Loadingโฆ