ๆญค้กต้ข็”ฑ็คพๅŒบไปŽ่‹ฑๆ–‡็ฟป่ฏ‘่€Œๆฅใ€‚ไบ†่งฃๆ›ดๅคšๅนถๅŠ ๅ…ฅ MDN Web Docs ็คพๅŒบใ€‚

View in English Always switch to English

Array.prototype.some()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ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

่ฏญๆณ•

js
some(callbackFn)
some(callbackFn, thisArg)

ๅ‚ๆ•ฐ

callbackFn

ไธบๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ๆ‰ง่กŒ็š„ๅ‡ฝๆ•ฐใ€‚ๅฎƒๅบ”่ฏฅ่ฟ”ๅ›žไธ€ไธช็œŸๅ€ผไปฅๆŒ‡็คบๅ…ƒ็ด ้€š่ฟ‡ๆต‹่ฏ•๏ผŒๅฆๅˆ™่ฟ”ๅ›žไธ€ไธชๅ‡ๅ€ผใ€‚่ฏฅๅ‡ฝๆ•ฐ่ขซ่ฐƒ็”จๆ—ถๅฐ†ไผ ๅ…ฅไปฅไธ‹ๅ‚ๆ•ฐ๏ผš

element

ๆ•ฐ็ป„ไธญๅฝ“ๅ‰ๆญฃๅœจๅค„็†็š„ๅ…ƒ็ด ใ€‚

index

ๆญฃๅœจๅค„็†็š„ๅ…ƒ็ด ๅœจๆ•ฐ็ป„ไธญ็š„็ดขๅผ•ใ€‚

array

่ฐƒ็”จไบ† some() ็š„ๆ•ฐ็ป„ๆœฌ่บซใ€‚

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ใ€‚

js
function isBiggerThan10(element, index, array) {
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10); // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true

ไฝฟ็”จ็ฎญๅคดๅ‡ฝๆ•ฐๆต‹่ฏ•ๆ•ฐ็ป„ๅ…ƒ็ด ็š„ๅ€ผ

็ฎญๅคดๅ‡ฝๆ•ฐๅฏไปฅ้€š่ฟ‡ๆ›ด็ฎ€ๆด็š„่ฏญๆณ•ๅฎž็Žฐ็›ธๅŒ็š„็”จไพ‹ใ€‚

js
[2, 5, 8, 1, 4].some((x) => x > 10); // false
[12, 5, 8, 1, 4].some((x) => x > 10); // true

ๅˆคๆ–ญๆ•ฐ็ป„ๅ…ƒ็ด ไธญๆ˜ฏๅฆๅญ˜ๅœจๆŸไธชๅ€ผ

ๆญคไพ‹ไธบๆจกไปฟ includes() ๆ–นๆณ•๏ผŒ่‹ฅๅ…ƒ็ด ๅœจๆ•ฐ็ป„ไธญๅญ˜ๅœจ๏ผŒๅˆ™ๅ›ž่ฐƒๅ‡ฝๆ•ฐ่ฟ”ๅ›žๅ€ผไธบ true :

js
const fruits = ["apple", "banana", "mango", "guava"];

function checkAvailability(arr, val) {
  return arr.some((arrVal) => val === arrVal);
}

checkAvailability(fruits, "kela"); // false
checkAvailability(fruits, "banana"); // true

ๅฐ†ไปปๆ„ๅ€ผ่ฝฌๆขไธบๅธƒๅฐ”็ฑปๅž‹

js
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() ไธไผšๅœจ็ฉบๆงฝไธŠ่ฟ่กŒๅฎƒ็š„ๆ–ญ่จ€ๅ‡ฝๆ•ฐใ€‚

js
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ใ€‚

js
const arrayLike = {
  length: 3,
  0: "a",
  1: "b",
  2: "c",
};
console.log(Array.prototype.some.call(arrayLike, (x) => typeof x === "number"));
// false

่ง„่Œƒ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-array.prototype.some

ๆต่งˆๅ™จๅ…ผๅฎนๆ€ง

ๅ‚่ง