Array.prototype.findLastIndex()
åºçº¿
广æ³å¯ç¨
èª 2022å¹´8æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
findLastIndex() æ¹æ³ååè¿ä»£æ°ç»ï¼å¹¶è¿å满足ææä¾çæµè¯å½æ°ç第ä¸ä¸ªå
ç´ çç´¢å¼ãè¥æ²¡ææ¾å°å¯¹åºå
ç´ ï¼åè¿å -1ã
å¦è¯·åè§ findLast() æ¹æ³ï¼è¯¥æ¹æ³è¿åæåä¸ä¸ªæ»¡è¶³æµè¯å½æ°çå
ç´ çå¼ï¼è䏿¯å®çç´¢å¼ï¼ã
å°è¯ä¸ä¸
const array1 = [5, 12, 50, 130, 44];
const isLargeNumber = (element) => element > 45;
console.log(array1.findLastIndex(isLargeNumber));
// Expected output: 3
// Index of element with value: 130
è¯æ³
findLastIndex(callbackFn)
findLastIndex(callbackFn, thisArg)
åæ°
callbackFn-
对æ°ç»ä¸çæ¯ä¸ªå ç´ æ§è¡ç彿°ãåè°å¿ é¡»è¿åä¸ä¸ªçå¼ï¼è¡¨ç¤ºå·²æ¾å°å¹é çå ç´ ï¼å¦åè¿åä¸ä¸ªåå¼ã彿°å¨è¢«è°ç¨æ¶ä¼ä¼ é以ä¸åæ°ï¼
thisArgå¯é-
æ§è¡
callbackFnæ¶ï¼ç¨ä½thisçå¼ãåè§è¿ä»£æ¹æ³ã
è¿åå¼
æ°ç»ä¸éè¿æµè¯çæåä¸ä¸ªï¼ç´¢å¼æå¤§ï¼å ç´ çç´¢å¼ãå¦ææ²¡ææ¾å°ä»»ä½å¹é çå ç´ ï¼åè¿å -1ã
æè¿°
findLastIndex() æ¹æ³æ¯ä¸ä¸ªè¿ä»£æ¹æ³ãå®ä¸ºæ°ç»ä¸çæ¯ä¸ªå
ç´ æç´¢å¼éåºè°ç¨ä¸æ¬¡æä¾ç callbackFn 彿°ï¼ç´å° callbackFn è¿åä¸ä¸ªçå¼ãç¶å findLastIndex() è¿åå
ç´ çç´¢å¼å¹¶ä¸åæ¢éåæ°ç»ã妿 callbackFn 没æè¿åä¸ä¸ªçå¼ï¼å findLastIndex() è¿å -1ã
callbackFn ä¼ä¸ºæ°ç»ä¸çæ¯ä¸ªå
ç´ è°ç¨ï¼èä¸ä»
ä»
æ¯é£äºè¢«èµå¼çå
ç´ ï¼è¿æå³ç对äºç¨çæ°ç»æ¥è¯´ï¼ç©ºæ§½çè¡ä¸ºå undefined ç¸åã
findLastIndex() æ¹æ³ä¸ä¼æ¹åè°ç¨å®çæ°ç»ï¼ä½æ¯æä¾ç callbackFn å¯ä»¥ã使¯è¯·æ³¨æï¼æ°ç»çé¿åº¦æ¯å¨ç¬¬ä¸æ¬¡è°ç¨ callbackFn ä¹åä¿åçãå æ¤ï¼
callbackFnä¸ä¼è®¿é®å¨è°ç¨findLastIndex()å¼å§åææ·»å å°æ°ç»ä¸çä»»ä½å ç´ ã- 对已访é®ç´¢å¼çæ´æ¹ä¸ä¼å¯¼è´å¯¹å®ä»¬å次è°ç¨
callbackFn彿°ã - 妿
callbackFnæ´æ¹äºæ°ç»ä¸ç°æçãå°æªè®¿é®çå ç´ ï¼å®ä¼ éç»callbackFnçå¼å°æ¯è¯¥å ç´ è¢«è®¿é®æ¶çå¼ãå·²å é¤å ç´ è¢«å½ä½undefinedæ¥è®¿é®ã
è¦åï¼ä¸ä¸æ®µæè¿°çå¹¶åä¿®æ¹çæ åµç»å¸¸å¯¼è´é¾ä»¥çè§£ç代ç ï¼é常åºè¯¥é¿å ï¼ç¹æ®æ åµé¤å¤ï¼ã
findLastIndex() æ¹æ³æ¯éç¨çãå®åªææ 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, 12].findLastIndex(isPrime)); // -1ï¼æ²¡ææ¾å°
console.log([4, 5, 7, 8, 9, 11, 12].findLastIndex(isPrime)); // 5
夿³¨ï¼isPrime() å®ç°ä»
便¼ç¤ºãå¨å®é
åºç¨ä¸ï¼ä¸ºäºé¿å
éå¤è®¡ç®ï¼ä¼ä½¿ç¨å¤§éè®°å¿åçç®æ³ï¼ä¾å¦åæææ¯ç¹å°¼çæ³ã
å¨ç¨çæ°ç»ä¸ä½¿ç¨ findLastIndex()
ä½ å¯ä»¥å¨ç¨çæ°ç»ä¸æç´¢ undefined å¹¶è·å¾ç©ºæ§½çç´¢å¼ã
console.log([1, , 3].findLastIndex((x) => x === undefined)); // 1
å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ findLastIndex()
findLastIndex() æ¹æ³è¯»å this ç length 屿§ï¼ç¶åè®¿é®æ¯ä¸ªæ´æ°ç´¢å¼ã
const arrayLike = {
length: 3,
0: 2,
1: 7.3,
2: 4,
};
console.log(
Array.prototype.findLastIndex.call(arrayLike, (x) => Number.isInteger(x)),
); // 2
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.findlastindex> |