Array.prototype.some()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
some() æ¹æ³æµè¯æ°ç»ä¸æ¯å¦è³å°æä¸ä¸ªå
ç´ éè¿äºç±æä¾ç彿°å®ç°çæµè¯ã妿卿°ç»ä¸æ¾å°ä¸ä¸ªå
ç´ ä½¿å¾æä¾ç彿°è¿å trueï¼åè¿å trueï¼å¦åè¿å falseãå®ä¸ä¼ä¿®æ¹æ°ç»ã
å°è¯ä¸ä¸
const array = [1, 2, 3, 4, 5];
// Checks whether an element is even
const even = (element) => element % 2 === 0;
console.log(array.some(even));
// Expected output: true
è¯æ³
some(callbackFn)
some(callbackFn, thisArg)
åæ°
callbackFn-
为æ°ç»ä¸çæ¯ä¸ªå ç´ æ§è¡ç彿°ãå®åºè¯¥è¿åä¸ä¸ªçå¼ä»¥æç¤ºå ç´ éè¿æµè¯ï¼å¦åè¿åä¸ä¸ªåå¼ãè¯¥å½æ°è¢«è°ç¨æ¶å°ä¼ å ¥ä»¥ä¸åæ°ï¼
thisArgå¯é-
æ§è¡
callbackFnæ¶ç¨ä½thisçå¼ãåè§è¿ä»£æ¹æ³ã
è¿åå¼
妿åè°å½æ°å¯¹æ°ç»ä¸è³å°ä¸ä¸ªå
ç´ è¿åä¸ä¸ªçå¼ï¼åè¿å trueãå¦åè¿å falseã
æè¿°
some() æ¹æ³æ¯ä¸ä¸ªè¿ä»£æ¹æ³ãå®ä¸ºæ°ç»ä¸çæ¯ä¸ªå
ç´ è°ç¨ä¸æ¬¡æå®ç callbackFn 彿°ï¼ç´å° callbackFn è¿åä¸ä¸ªçå¼ã妿æ¾å°è¿æ ·çå
ç´ ï¼some() æ¹æ³å°ä¼ç«å³è¿å true 并忢éåæ°ç»ãå¦åï¼å¦æ callbackFn 对ææå
ç´ é½è¿ååå¼ï¼some() å°±ä¼è¿å falseã
some() ç±»ä¼¼äºæ°å¦ä¸çâåå¨éè¯ï¼âï¼âãç¹å«å°ï¼å¨å¯¹äºä¸ä¸ªç©ºæ°ç»ï¼ä»»ä½æ¡ä»¶ä¸å®é½è¿å falseã
callbackFn ä»
é对已åé
å¼çæ°ç»ç´¢å¼è°ç¨ãå®ä¸ä¼ä¸ºç¨çæ°ç»ä¸ç空槽è°ç¨ã
some() ä¸ä¼æ¹åè°ç¨å®çæ°ç»ï¼ä½æå®ç callbackFn 彿°å¯ä»¥ã使¯è¯·æ³¨æï¼æ°ç»çé¿åº¦æ¯å¨ç¬¬ä¸æ¬¡è°ç¨ callbackFn ä¹åä¿åçãå æ¤ï¼
- å½å¼å§è°ç¨
some()æ¶ï¼callbackFnå°ä¸ä¼è®¿é®è¶ åºæ°ç»åå§é¿åº¦çä»»ä½å ç´ ã - 对已访é®ç´¢å¼çæ´æ¹ä¸ä¼å¯¼è´å次å¨è¿äºå
ç´ ä¸è°ç¨
callbackFnã - 妿æ°ç»ä¸ä¸ä¸ªç°æçãå°æªè®¿é®çå
ç´ è¢«
callbackFnæ´æ¹ï¼åå®ä¼ éç»callbackFnçå¼å°æ¯è¯¥å ç´ è¢«ä¿®æ¹åçå¼ã被å é¤çå ç´ åä¸ä¼è¢«è®¿é®ã
è¦åï¼ä¸è¿°ç±»åçå¹¶åä¿®æ¹ç»å¸¸å¯¼è´é¾ä»¥çè§£ç代ç ï¼é常åºé¿å ï¼ç¹æ®æ åµé¤å¤ï¼ã
some() æ¹æ³æ¯éç¨çãå®åªææ this å¼å
·æ length 屿§åæ´æ°é®å±æ§ã
示ä¾
>æµè¯æ°ç»å ç´ çå¼
ä¸é¢çä¾åæ£æµå¨æ°ç»ä¸æ¯å¦æå ç´ å¤§äº 10ã
function isBiggerThan10(element, index, array) {
return element > 10;
}
[2, 5, 8, 1, 4].some(isBiggerThan10); // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true
使ç¨ç®å¤´å½æ°æµè¯æ°ç»å ç´ çå¼
ç®å¤´å½æ°å¯ä»¥éè¿æ´ç®æ´çè¯æ³å®ç°ç¸åçç¨ä¾ã
[2, 5, 8, 1, 4].some((x) => x > 10); // false
[12, 5, 8, 1, 4].some((x) => x > 10); // true
夿æ°ç»å ç´ ä¸æ¯å¦åå¨æä¸ªå¼
æ¤ä¾ä¸ºæ¨¡ä»¿ includes() æ¹æ³ï¼è¥å
ç´ å¨æ°ç»ä¸åå¨ï¼ååè°å½æ°è¿åå¼ä¸º true :
const fruits = ["apple", "banana", "mango", "guava"];
function checkAvailability(arr, val) {
return arr.some((arrVal) => val === arrVal);
}
checkAvailability(fruits, "kela"); // false
checkAvailability(fruits, "banana"); // true
å°ä»»æå¼è½¬æ¢ä¸ºå¸å°ç±»å
const TRUTHY_VALUES = [true, "true", 1];
function getBoolean(value) {
if (typeof value === "string") {
value = value.toLowerCase().trim();
}
return TRUTHY_VALUES.some((t) => t === value);
}
getBoolean(false); // false
getBoolean("false"); // false
getBoolean(1); // true
getBoolean("true"); // true
å¨ç¨çæ°ç»ä¸ä½¿ç¨ some()
some() ä¸ä¼å¨ç©ºæ§½ä¸è¿è¡å®çæè¨å½æ°ã
console.log([1, , 3].some((x) => x === undefined)); // false
console.log([1, , 1].some((x) => x !== 1)); // false
console.log([1, undefined, 1].some((x) => x !== 1)); // true
å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ some()
some() æ¹æ³è¯»å this ç length 屿§ï¼ç¶åè®¿é®æ¯ä¸ªæ´æ°ç´¢å¼ï¼ç´å°å°è¾¾æ«å°¾æ callbackFn è¿å trueã
const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
};
console.log(Array.prototype.some.call(arrayLike, (x) => typeof x === "number"));
// false
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.some> |