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

View in English Always switch to English

Array

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 parts of this feature may have varying levels of support.

ไธŽๅ…ถไป–็ผ–็จ‹่ฏญ่จ€ไธญ็š„ๆ•ฐ็ป„ไธ€ๆ ท๏ผŒArray ๅฏน่ฑกๆ”ฏๆŒๅœจๅ•ไธชๅ˜้‡ๅไธ‹ๅญ˜ๅ‚จๅคšไธชๅ…ƒ็ด ๏ผŒๅนถๅ…ทๆœ‰ๆ‰ง่กŒๅธธ่งๆ•ฐ็ป„ๆ“ไฝœ็š„ๆˆๅ‘˜ใ€‚

ๆ่ฟฐ

ๅœจ JavaScript ไธญ๏ผŒๆ•ฐ็ป„ไธๆ˜ฏๅŽŸๅง‹็ฑปๅž‹๏ผŒ่€Œๆ˜ฏๅ…ทๆœ‰ไปฅไธ‹ๆ ธๅฟƒ็‰นๅพ็š„ Array ๅฏน่ฑก๏ผš

  • JavaScript ๆ•ฐ็ป„ๆ˜ฏๅฏ่ฐƒๆ•ดๅคงๅฐ็š„๏ผŒๅนถไธ”ๅฏไปฅๅŒ…ๅซไธๅŒ็š„ๆ•ฐๆฎ็ฑปๅž‹ใ€‚๏ผˆๅฝ“ไธ้œ€่ฆ่ฟ™ไบ›็‰นๅพๆ—ถ๏ผŒๅฏไปฅไฝฟ็”จ็ฑปๅž‹ๅŒ–ๆ•ฐ็ป„ใ€‚๏ผ‰
  • JavaScript ๆ•ฐ็ป„ไธๆ˜ฏๅ…ณ่”ๆ•ฐ็ป„๏ผŒๅ› ๆญค๏ผŒไธ่ƒฝไฝฟ็”จไปปๆ„ๅญ—็ฌฆไธฒไฝœไธบ็ดขๅผ•่ฎฟ้—ฎๆ•ฐ็ป„ๅ…ƒ็ด ๏ผŒไฝ†ๅฟ…้กปไฝฟ็”จ้ž่ดŸๆ•ดๆ•ฐ๏ผˆๆˆ–ๅฎƒไปฌๅ„่‡ช็š„ๅญ—็ฌฆไธฒๅฝขๅผ๏ผ‰ไฝœไธบ็ดขๅผ•่ฎฟ้—ฎใ€‚
  • JavaScript ๆ•ฐ็ป„็š„็ดขๅผ•ไปŽ 0 ๅผ€ๅง‹๏ผšๆ•ฐ็ป„็š„็ฌฌไธ€ไธชๅ…ƒ็ด ๅœจ็ดขๅผ• 0 ๅค„๏ผŒ็ฌฌไบŒไธชๅœจ็ดขๅผ• 1 ๅค„๏ผŒไปฅๆญค็ฑปๆŽจ๏ผŒๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ๆ˜ฏๆ•ฐ็ป„็š„ length ๅฑžๆ€งๅ‡ๅŽป 1 ็š„ๅ€ผใ€‚
  • JavaScript ๆ•ฐ็ป„ๅคๅˆถๆ“ไฝœๅˆ›ๅปบๆต…ๆ‹ท่ดใ€‚๏ผˆๆ‰€ๆœ‰ JavaScript ๅฏน่ฑก็š„ๆ ‡ๅ‡†ๅ†…็ฝฎๅคๅˆถๆ“ไฝœ้ƒฝไผšๅˆ›ๅปบๆต…ๆ‹ท่ด๏ผŒ่€Œไธๆ˜ฏๆทฑๆ‹ท่ด๏ผ‰ใ€‚

ๆ•ฐ็ป„็ดขๅผ•

Array ๅฏน่ฑกไธ่ƒฝไฝฟ็”จไปปๆ„ๅญ—็ฌฆไธฒไฝœไธบๅ…ƒ็ด ็ดขๅผ•๏ผˆๅฆ‚ๅ…ณ่”ๆ•ฐ็ป„๏ผ‰๏ผŒๅฟ…้กปไฝฟ็”จ้ž่ดŸๆ•ดๆ•ฐ๏ผˆๆˆ–ๅฎƒไปฌ็š„ๅญ—็ฌฆไธฒๅฝขๅผ๏ผ‰ใ€‚้€š่ฟ‡้žๆ•ดๆ•ฐ่ฎพ็ฝฎๆˆ–่ฎฟ้—ฎไธไผš่ฎพ็ฝฎๆˆ–ไปŽๆ•ฐ็ป„ๅˆ—่กจๆœฌ่บซๆฃ€็ดขๅ…ƒ็ด ๏ผŒไฝ†ไผš่ฎพ็ฝฎๆˆ–่ฎฟ้—ฎไธŽ่ฏฅๆ•ฐ็ป„็š„ๅฏน่ฑกๅฑžๆ€ง้›†ๅˆ็›ธๅ…ณ็š„ๅ˜้‡ใ€‚ๆ•ฐ็ป„็š„ๅฏน่ฑกๅฑžๆ€งๅ’Œๆ•ฐ็ป„ๅ…ƒ็ด ๅˆ—่กจๆ˜ฏๅˆ†ๅผ€็š„๏ผŒๆ•ฐ็ป„็š„้ๅކๅ’Œไฟฎๆ”นๆ“ไฝœไธ่ƒฝๅบ”็”จไบŽ่ฟ™ไบ›ๅ…ทๅๅฑžๆ€งใ€‚

ๆ•ฐ็ป„ๅ…ƒ็ด ๆ˜ฏๅฏน่ฑกๅฑžๆ€ง๏ผŒๅฐฑๅƒ toString ๆ˜ฏๅฑžๆ€งไธ€ๆ ท๏ผˆๅ…ทไฝ“ๆฅ่ฏด๏ผŒtoString() ๆ˜ฏไธ€็งๆ–นๆณ•๏ผ‰ใ€‚็„ถ่€Œ๏ผŒๅฐ่ฏ•ๆŒ‰ไปฅไธ‹ๆ–นๅผ่ฎฟ้—ฎๆ•ฐ็ป„็š„ๅ…ƒ็ด ไผšๆŠ›ๅ‡บ่ฏญๆณ•้”™่ฏฏ๏ผŒๅ› ไธบๅฑžๆ€งๅๆ— ๆ•ˆ๏ผš

js
arr.0; // ่ฏญๆณ•้”™่ฏฏ

JavaScript ่ฏญๆณ•่ฆๆฑ‚ไฝฟ็”จๆ–นๆ‹ฌๅท่กจ็คบๆณ•่€Œไธๆ˜ฏ็‚นๅท่กจ็คบๆณ•ๆฅ่ฎฟ้—ฎไปฅๆ•ฐๅญ—ๅผ€ๅคด็š„ๅฑžๆ€งใ€‚ไนŸๅฏไปฅ็”จๅผ•ๅทๅŒ…่ฃนๆ•ฐ็ป„็ดขๅผ•๏ผˆไพ‹ๅฆ‚๏ผŒyears['2'] ่€Œไธๆ˜ฏ years[2]๏ผ‰๏ผŒๅฐฝ็ฎก้€šๅธธๆฒกๆœ‰ๅฟ…่ฆใ€‚

JavaScript ๅผ•ๆ“Ž้€š่ฟ‡้šๅผ็š„ toString๏ผŒๅฐ† years[2] ไธญ็š„ 2 ๅผบๅˆถ่ฝฌๆขไธบๅญ—็ฌฆไธฒใ€‚ๅ› ๆญค๏ผŒ'2' ๅ’Œ '02' ๅฐ†ๆŒ‡ๅ‘ years ๅฏน่ฑกไธŠ็š„ไธคไธชไธๅŒ็š„ๆงฝไฝ๏ผŒไธ‹้ข็š„ไพ‹ๅญๅฏ่ƒฝๆ˜ฏ true๏ผš

js
console.log(years["2"] !== years["02"]);

ๅชๆœ‰ years['2'] ๆ˜ฏไธ€ไธชๅฎž้™…็š„ๆ•ฐ็ป„็ดขๅผ•ใ€‚years['02'] ๆ˜ฏไธ€ไธชๅœจๆ•ฐ็ป„่ฟญไปฃไธญไธไผš่ขซ่ฎฟ้—ฎ็š„ไปปๆ„ๅญ—็ฌฆไธฒๅฑžๆ€งใ€‚

้•ฟๅบฆไธŽๆ•ฐๅ€ผๅฑžๆ€ง็š„ๅ…ณ็ณป

JavaScript ๆ•ฐ็ป„็š„ length ๅฑžๆ€งๅ’Œๆ•ฐๅ€ผๅฑžๆ€งๆ˜ฏ่ฟžๆŽฅ็š„ใ€‚

ไธ€ไบ›ๅ†…็ฝฎๆ•ฐ็ป„ๆ–นๆณ•๏ผˆไพ‹ๅฆ‚ join()ใ€slice()ใ€indexOf() ็ญ‰๏ผ‰ๅœจ่ขซ่ฐƒ็”จๆ—ถไผš่€ƒ่™‘ๅˆฐๆ•ฐ็ป„็š„ length ๅฑžๆ€ง็š„ๅ€ผใ€‚

ๅ…ถไป–ๆ–นๆณ•๏ผˆไพ‹ๅฆ‚๏ผŒpush()ใ€splice() ็ญ‰๏ผ‰ไนŸไผšๆ›ดๆ–ฐๆ•ฐ็ป„็š„ length ๅฑžๆ€งใ€‚

js
const fruits = [];
fruits.push("banana", "apple", "peach");
console.log(fruits.length); // 3

ๅฝ“ๅœจ JavaScript ๆ•ฐ็ป„ไธŠ่ฎพ็ฝฎไธ€ไธชๅฑžๆ€งๆ—ถ๏ผŒๅฆ‚ๆžœ่ฏฅๅฑžๆ€งๆ˜ฏไธ€ไธชๆœ‰ๆ•ˆ็š„ๆ•ฐ็ป„็ดขๅผ•ๅนถไธ”่ฏฅ็ดขๅผ•ๅœจๆ•ฐ็ป„็š„ๅฝ“ๅ‰่พน็•Œไน‹ๅค–๏ผŒๅผ•ๆ“Žๅฐ†็›ธๅบ”ๅœฐๆ›ดๆ–ฐๆ•ฐ็ป„็š„ length ๅฑžๆ€ง๏ผš

js
fruits[5] = "mango";
console.log(fruits[5]); // 'mango'
console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
console.log(fruits.length); // 6

ๅขžๅŠ  length ไผš้€š่ฟ‡ๆทปๅŠ ็ฉบๆงฝๆฅๆ‰ฉๅฑ•ๆ•ฐ็ป„๏ผŒ่€Œไธๆ˜ฏๅˆ›ๅปบไปปไฝ•ๆ–ฐๅ…ƒ็ด โ€”โ€”็”š่‡ณไธไผšๆ˜ฏ undefinedใ€‚

js
fruits.length = 10;
console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
console.log(fruits.length); // 10
console.log(fruits[8]); // undefined

ไฝ†ๆ˜ฏ๏ผŒๅ‡ๅฐ‘ length ๅฑžๆ€งไผšๅˆ ้™คๅ…ƒ็ด ใ€‚

js
fruits.length = 2;
console.log(Object.keys(fruits)); // ['0', '1']
console.log(fruits.length); // 2

่ฟ™ๅฐ†ๅœจ length ้กตไธญ่ฟ›ไธ€ๆญฅ่งฃ้‡Šใ€‚

ๆ•ฐ็ป„ๆ–นๆณ•ๅ’Œ็ฉบๆงฝ

ๆ•ฐ็ป„ๆ–นๆณ•ๅœจ้‡ๅˆฐ็ฉบๆงฝๆ—ถๆœ‰ไธๅŒ็š„่กŒไธบ๏ผŒๅœจ็จ€็–ๆ•ฐ็ป„ไธญๆ•ฐ็ป„ๆ–นๆณ•้‡ๅˆฐ็ฉบๆงฝๆ—ถๆœ‰ไธๅŒ็š„่กŒไธบใ€‚้€šๅธธ๏ผŒ่พƒๆ—ง็š„ๆ–นๆณ•๏ผˆไพ‹ๅฆ‚ forEach๏ผ‰ๅค„็†็ฉบๆงฝ็š„ๆ–นๅผไธŽๅค„็†ๅŒ…ๅซ undefined ็ดขๅผ•็š„ๆ–นๅผไธๅŒใ€‚

ๅฏน็ฉบๆงฝ่ฟ›่กŒ็‰นๆฎŠๅค„็†็š„ๆ–นๆณ•ๅŒ…ๆ‹ฌ๏ผšconcat()ใ€copyWithin()ใ€every()ใ€filter()ใ€flat()ใ€flatMap()ใ€forEach()ใ€indexOf()ใ€lastIndexOf()ใ€map()ใ€reduce()ใ€reduceRight()ใ€reverse()ใ€slice()ใ€some()ใ€sort() ๅ’Œ splice()ใ€‚่ฏธๅฆ‚ forEach ไน‹็ฑป็š„่ฟญไปฃๆ–นๆณ•ๆ นๆœฌไธไผš่ฎฟ้—ฎ็ฉบๆงฝใ€‚ๅ…ถไป–ๆ–นๆณ•๏ผŒๅฆ‚ concatใ€copyWithin ็ญ‰๏ผŒๅœจ่ฟ›่กŒๅคๅˆถๆ—ถไผšไฟ็•™็ฉบๆงฝ๏ผŒๅ› ๆญคๆœ€็ปˆๆ•ฐ็ป„ไพ็„ถๆ˜ฏ็จ€็–็š„ใ€‚

js
const colors = ["็บข", "้ป„", "่“"];
colors[5] = "็ดซ";
colors.forEach((item, index) => {
  console.log(`${index}๏ผš${item}`);
});
// ่พ“ๅ‡บ๏ผš
// 0๏ผš็บข
// 1๏ผš้ป„
// 2๏ผš่“
// 5๏ผš็ดซ

colors.reverse(); // ['็ดซ', ็ฉบๆงฝ ร— 2, '่“', '้ป„', '็บข']

่พƒๆ–ฐ็š„ๆ–นๆณ•๏ผˆไพ‹ๅฆ‚ keys๏ผ‰ไธไผšๅฏน็ฉบๆงฝ่ฟ›่กŒ็‰นๆฎŠๅค„็†๏ผŒ่€Œๆ˜ฏๅฐ†ๅฎƒไปฌ่ง†ไธบๅŒ…ๅซ undefinedใ€‚ๅฐ†็ฉบๆงฝๅˆๅนถไธบ undefined ๅ…ƒ็ด ๆ–นๆณ•ๆœ‰๏ผšentries()ใ€fill()ใ€find()ใ€findIndex()ใ€findLast()ใ€findLastIndex()ใ€includes()ใ€join()ใ€keys()ใ€toLocaleString()ใ€values() ๅ’Œ with()ใ€‚

js
const colors = ["็บข", "้ป„", "่“"];
colors[5] = "็ดซ";
const iterator = colors.keys();
for (const key of iterator) {
  console.log(`${key}๏ผš${colors[key]}`);
}
// ่พ“ๅ‡บ
// 0๏ผš็บข
// 1๏ผš้ป„
// 2๏ผš่“
// 3๏ผšundefined
// 4๏ผšundefined
// 5๏ผš็ดซ

const newColors = colors.toReversed(); // ['็ดซ', undefined, undefined, '่“', '้ป„', '็บข']

ๅคๅˆถๆ–นๆณ•ๅ’Œไฟฎๆ”นๆ–นๆณ•

ๆœ‰ไบ›ๆ–นๆณ•ไธไผšไฟฎๆ”น่ฐƒ็”จ่ฏฅๆ–นๆณ•็š„็Žฐๆœ‰ๆ•ฐ็ป„๏ผŒ่€Œๆ˜ฏ่ฟ”ๅ›žไธ€ไธชๆ–ฐ็š„ๆ•ฐ็ป„ใ€‚ๅฎƒไปฌ้€š่ฟ‡้ฆ–ๅ…ˆๆž„้€ ไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒ็„ถๅŽๅกซๅ……ๅ…ƒ็ด ๆฅๅฎž็Žฐใ€‚ๅคๅˆถๅง‹็ปˆๆ˜ฏๆต…ๅฑ‚ๆฌก็š„โ€”โ€”่ฏฅๆ–นๆณ•ไปŽไธๅคๅˆถไธ€ๅผ€ๅง‹ๅˆ›ๅปบ็š„ๆ•ฐ็ป„ไน‹ๅค–็š„ไปปไฝ•ๅ†…ๅฎนใ€‚ๅŽŸๅง‹ๆ•ฐ็ป„็š„ๅ…ƒ็ด ๅฐ†ๆŒ‰ไปฅไธ‹ๆ–นๅผๅคๅˆถๅˆฐๆ–ฐๆ•ฐ็ป„ไธญ๏ผš

  • ๅฏน่ฑก๏ผšๅฏน่ฑกๅผ•็”จ่ขซๅคๅˆถๅˆฐๆ–ฐๆ•ฐ็ป„ไธญใ€‚ๅŽŸๆ•ฐ็ป„ๅ’Œๆ–ฐๆ•ฐ็ป„้ƒฝๅผ•็”จๅŒไธ€ไธชๅฏน่ฑกใ€‚ไนŸๅฐฑๆ˜ฏ่ฏด๏ผŒๅฆ‚ๆžœไธ€ไธช่ขซๅผ•็”จ็š„ๅฏน่ฑก่ขซไฟฎๆ”น๏ผŒๆ–ฐๆ•ฐ็ป„ๅ’ŒๅŽŸๆ•ฐ็ป„้ƒฝๅฏไปฅ็œ‹ๅˆฐๆ›ดๆ”นใ€‚
  • ๅŽŸๅง‹็ฑปๅž‹๏ผŒๅฆ‚ๅญ—็ฌฆไธฒใ€ๆ•ฐๅญ—ๅ’Œๅธƒๅฐ”ๅ€ผ๏ผˆไธๆ˜ฏ Stringใ€Number ๅ’Œ Boolean ๅฏน่ฑก๏ผ‰๏ผšๅฎƒไปฌ็š„ๅ€ผ่ขซๅคๅˆถๅˆฐๆ–ฐๆ•ฐ็ป„ไธญใ€‚

ๅ…ถไป–ๆ–นๆณ•ไผšๆ”นๅ˜่ฐƒ็”จ่ฏฅๆ–นๆณ•็š„ๆ•ฐ็ป„๏ผŒๅœจ่ฟ™็งๆƒ…ๅ†ตไธ‹๏ผŒๅฎƒไปฌ็š„่ฟ”ๅ›žๅ€ผๆ นๆฎๆ–นๆณ•็š„ไธๅŒ่€ŒไธๅŒ๏ผšๆœ‰ๆ—ถๆ˜ฏๅฏน็›ธๅŒๆ•ฐ็ป„็š„ๅผ•็”จ๏ผŒๆœ‰ๆ—ถๆ˜ฏๆ–ฐๆ•ฐ็ป„็š„้•ฟๅบฆใ€‚

ไปฅไธ‹ๆ–นๆณ•้€š่ฟ‡่ฎฟ้—ฎ this.constructor[Symbol.species] ๆฅๅˆ›ๅปบๆ–ฐๆ•ฐ็ป„๏ผŒไปฅ็กฎๅฎš่ฆไฝฟ็”จ็š„ๆž„้€ ๅ‡ฝๆ•ฐ๏ผšconcat()ใ€filter()ใ€flat()ใ€flatMap()ใ€map()ใ€slice() ๅ’Œ splice()๏ผˆ่ฟ”ๅ›žๆž„้€ ็š„ๅทฒๅˆ ้™คๅ…ƒ็ด ๆ•ฐ็ป„๏ผ‰

ไปฅไธ‹ๆ–นๆณ•ๆ€ปๆ˜ฏไฝฟ็”จ Array ๅŸบ็ก€ๆž„้€ ๅ‡ฝๆ•ฐๅˆ›ๅปบๆ–ฐๆ•ฐ็ป„๏ผštoReversed()ใ€toSorted()ใ€toSpliced() ๅ’Œ with()ใ€‚

ไธ‹่กจๅˆ—ๅ‡บไบ†ไผšไฟฎๆ”นๅŽŸๅง‹ๆ•ฐ็ป„็š„ๆ–นๆณ•๏ผŒไปฅๅŠ็›ธๅบ”็š„้žไฟฎๆ”นๆ–นๆณ•๏ผš

ไฟฎๆ”นๆ–นๆณ• ็›ธๅบ”็š„้žไฟฎๆ”นๆ–นๆณ•
copyWithin() ๆฒกๆœ‰็›ธๅบ”็š„้žไฟฎๆ”นๆ–นๆณ•
fill() ๆฒกๆœ‰็›ธๅบ”็š„้žไฟฎๆ”นๆ–นๆณ•
pop() slice(0, -1)
push(v1, v2) concat([v1, v2])
reverse() toReversed()
shift() slice(1)
sort() toSorted()
splice() toSpliced()
unshift(v1, v2) toSpliced(0, 0, v1, v2)

ๅฐ†ๆ”นๅ˜ๅŽŸๆ•ฐ็ป„็š„ๆ–นๆณ•่ฝฌๆขไธบ้žไฟฎๆ”นๆ–นๆณ•็š„ไธ€็ง็ฎ€ๅ•ๆ–นๅผๆ˜ฏไฝฟ็”จๅฑ•ๅผ€่ฏญๆณ•ๆˆ– slice() ๅ…ˆๅˆ›ๅปบไธ€ไธชๅ‰ฏๆœฌ๏ผš

js
arr.copyWithin(0, 1, 2); // ๆ”นๅ˜ไบ† arr
const arr2 = arr.slice().copyWithin(0, 1, 2); // ไธๆ”นๅ˜ arr
const arr3 = [...arr].copyWithin(0, 1, 2); // ไธๆ”นๅ˜ arr

่ฟญไปฃๆ–นๆณ•

่ฎธๅคšๆ•ฐ็ป„ๆ–นๆณ•ๆŽฅๅ—ไธ€ไธชๅ›ž่ฐƒๅ‡ฝๆ•ฐไฝœไธบๅ‚ๆ•ฐใ€‚ๅ›ž่ฐƒๅ‡ฝๆ•ฐๆŒ‰้กบๅบไธบๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ่ฐƒ็”จ๏ผŒไธ”ๆœ€ๅคš่ฐƒ็”จไธ€ๆฌก๏ผŒๅนถไธ”ๅ›ž่ฐƒๅ‡ฝๆ•ฐ็š„่ฟ”ๅ›žๅ€ผ็”จไบŽ็กฎๅฎšๆ–นๆณ•็š„่ฟ”ๅ›žๅ€ผใ€‚ๅฎƒไปฌ้ƒฝๅ…ทๆœ‰็›ธๅŒ็š„ๆ–นๆณ•็ญพๅ๏ผš

js
method(callbackFn, thisArg)

ๅ…ถไธญ callbackFn ๆŽฅๅ—ไธ‰ไธชๅ‚ๆ•ฐ

element

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

index

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

array

่ฐƒ็”จ่ฏฅๆ–นๆณ•็š„ๆ•ฐ็ป„ใ€‚

callbackFn ็š„่ฟ”ๅ›žๅ€ผๅ–ๅ†ณไบŽ่ฐƒ็”จ็š„ๆ•ฐ็ป„ๆ–นๆณ•ใ€‚

thisArg ๅ‚ๆ•ฐ๏ผˆ้ป˜่ฎคไธบ undefined๏ผ‰ๅฐ†ๅœจ่ฐƒ็”จ callbackFn ๆ—ถ็”จไฝœ this ๅ€ผใ€‚ๆœ€็ปˆ็”ฑ callbackFn ่ง‚ๅฏŸๅˆฐ็š„ this ๅ€ผๆ นๆฎ้€šๅธธ็š„่ง„ๅˆ™็กฎๅฎš๏ผšๅฆ‚ๆžœ callbackFn ๆ˜ฏ้žไธฅๆ ผๆจกๅผ๏ผŒๅŽŸๅง‹ this ๅ€ผๅฐ†่ขซๅŒ…่ฃ…ไธบๅฏน่ฑก๏ผŒๅนถๅฐ† undefined/null ๆ›ฟๆขไธบ globalThisใ€‚ๅฏนไบŽไฝฟ็”จ็ฎญๅคดๅ‡ฝๆ•ฐ ๅฎšไน‰็š„ไปปไฝ• callbackFn ๆฅ่ฏด๏ผŒthisArg ๅ‚ๆ•ฐ้ƒฝๆ˜ฏๆ— ๅ…ณ็ดง่ฆ็š„๏ผŒๅ› ไธบ็ฎญๅคดๅ‡ฝๆ•ฐๆฒกๆœ‰่‡ชๅทฑ็š„ this ็ป‘ๅฎšใ€‚

ๅฆ‚ๆžœๆƒณ่ฆๅœจ่ฟญไปฃๆœŸ้—ด่ฏปๅ–ๅฆไธ€ไธช็ดขๅผ•ๅ€ผ็š„่ฏ๏ผŒไผ ้€’็ป™ callbackFn ็š„ array ๅ‚ๆ•ฐๆ˜ฏๆœ‰็”จ็š„๏ผŒๅ› ไธบๅฏ่ƒฝๅนถไธๆ€ปๆ˜ฏๆœ‰ไธ€ไธชๅผ•็”จๅฝ“ๅ‰ๆ•ฐๆฎ็š„็Žฐๆœ‰ๅ˜้‡ใ€‚ๅœจ่ฟญไปฃ่ฟ‡็จ‹ไธญ๏ผŒ้€šๅธธไธๅบ”ๆ›ดๆ”นๆ•ฐ็ป„๏ผˆๅ‚่ง ่ฟญไปฃๆ–นๆณ•ไธญ็š„ๆ”นๅ˜ๅˆๅง‹ๆ•ฐ็ป„๏ผ‰๏ผŒไฝ†ๅฏไปฅไฝฟ็”จ่ฟ™ไธชๅ‚ๆ•ฐ่ฟ™ๆ ทๅšใ€‚array ๅ‚ๆ•ฐไธๆ˜ฏๆญฃๅœจๆž„ๅปบ็š„ๆ•ฐ็ป„๏ผŒๅœจ็ฑปไผผ map()ใ€filter() ๅ’Œ flatMap() ๆ–นๆณ•็š„ๆƒ…ๅ†ตไธ‹โ€”โ€”ๆ— ๆณ•้€š่ฟ‡ๅ›ž่ฐƒๅ‡ฝๆ•ฐ่ฎฟ้—ฎๆญฃๅœจๆž„ๅปบ็š„ๆ•ฐ็ป„ใ€‚

ๆ‰€ๆœ‰่ฟญไปฃๆ–นๆณ•้ƒฝๆ˜ฏๅคๅˆถๆ–นๆณ•ๅ’Œ้€š็”จๆ–นๆณ•๏ผŒๅฐฝ็ฎกๅฎƒไปฌๅœจๅค„็†็ฉบๆงฝๆ—ถ็š„่กŒไธบไธๅŒใ€‚

ไปฅไธ‹ๆ–นๆณ•ๆ˜ฏ่ฟญไปฃๆ–นๆณ•๏ผševery()ใ€filter()ใ€find()ใ€findIndex()ใ€findLast()ใ€findLastIndex()ใ€flatMap()ใ€forEach()ใ€map() ๅ’Œ some()ใ€‚

็‰นๅˆซๅœฐ๏ผŒevery()ใ€find()ใ€findIndex()ใ€findLast()ใ€findLastIndex() ๅ’Œ some() ๅนถไธๆ€ปๆ˜ฏๅœจๆฏไธชๅ…ƒ็ด ไธŠ่ฐƒ็”จ callbackFnโ€”โ€”ๅฎƒไปฌๅœจ็กฎๅฎš่ฟ”ๅ›žๅ€ผๅŽ็ซ‹ๅณๅœๆญข่ฟญไปฃใ€‚

reduce() ๅ’Œ reduceRight() ๆ–นๆณ•ไนŸๆŽฅๅ—ไธ€ไธชๅ›ž่ฐƒๅ‡ฝๆ•ฐ๏ผŒๅนถๅฏนๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ๆœ€ๅคš่ฟ่กŒไธ€ๆฌก๏ผŒไฝ†ๅฎƒไปฌ็š„ๆ–นๆณ•็ญพๅไธŽๅ…ธๅž‹็š„่ฟญไปฃๆ–นๆณ•็•ฅๆœ‰ไธๅŒ๏ผˆไพ‹ๅฆ‚๏ผŒๅฎƒไปฌไธๆŽฅๅ— thisArg๏ผ‰ใ€‚

sort() ๆ–นๆณ•ไนŸๆŽฅๅ—ไธ€ไธชๅ›ž่ฐƒๅ‡ฝๆ•ฐ๏ผŒไฝ†ๅฎƒไธๆ˜ฏไธ€ไธช่ฟญไปฃๆ–นๆณ•ใ€‚ๅฎƒไผšๅฐฑๅœฐไฟฎๆ”นๆ•ฐ็ป„๏ผŒไธๆŽฅๅ— thisArg๏ผŒๅนถไธ”ๅฏ่ƒฝๅœจ็ดขๅผ•ไธŠๅคšๆฌก่ฐƒ็”จๅ›ž่ฐƒๅ‡ฝๆ•ฐใ€‚

่ฟญไปฃๆ–นๆณ•่ฟญไปฃๆ•ฐ็ป„๏ผŒๅฆ‚ไธ‹ๆ‰€็คบ๏ผˆ็œ็•ฅ่ฎธๅคšๆŠ€ๆœฏ็ป†่Š‚๏ผ‰๏ผš

js
function method(callbackFn, thisArg) {
  const length = this.length;
  for (let i = 0; i < length; i++) {
    if (i in this) {
      const result = callbackFn.call(thisArg, this[i], i, this);
      // ไฝฟ็”จ result ๅšไธ€ไบ›ไบ‹๏ผŒไนŸ่ฎธๆ›ดๆ—ฉๅœฐ่ฟ”ๅ›ž
    }
  }
}

ๅค‡ๆณจๅฆ‚ไธ‹ๅ†…ๅฎน๏ผš

  1. ไธๆ˜ฏๆ‰€ๆœ‰็š„ๆ–นๆณ•้ƒฝๆ‰ง่กŒ i in this ้ชŒ่ฏ๏ผŒfindใ€findIndexใ€findLast ๅ’Œ findLastIndex ๆ–นๆณ•ไธๆ‰ง่กŒ๏ผŒๅ…ถไป–็š„ไผšใ€‚
  2. length ๅ˜้‡ๅœจๅพช็Žฏๅผ€ๅง‹ๅ‰ๅญ˜ๅ‚จใ€‚่ฟ™ไผšๅฝฑๅ“่ฟญไปฃ่ฟ‡็จ‹ไธญๆ’ๅ…ฅๅ’Œๅˆ ้™ค็š„ๅค„็†ๆ–นๅผ๏ผˆๅ‚่ง่ฟญไปฃๆ–นๆณ•ไธญ็š„ๆ”นๅ˜ๅˆๅง‹ๆ•ฐ็ป„๏ผ‰ใ€‚
  3. method ๆ–นๆณ•ไธไผšๅญ˜ๅ‚จๆ•ฐ็ป„ๅ†…ๅฎน๏ผŒๅ› ๆญคๅฆ‚ๆžœ่ฟญไปฃๆœŸ้—ด๏ผŒๆœ‰ไปปไฝ•็ดขๅผ•ๅ‘็”Ÿๆ›ดๆ”น๏ผŒๅฏไปฅ่ง‚ๅฏŸๅˆฐๆ–ฐ็š„ๅ€ผใ€‚
  4. ไธŠ้ข็š„ไปฃ็ ๆŒ‰็ดขๅผ•็š„ๅ‡ๅบ่ฟญไปฃๆ•ฐ็ป„๏ผŒๆœ‰ไธ€ไบ›ๆ–นๆณ•ๆŒ‰็ดขๅผ•้™ๅบ่ฟญไปฃ๏ผˆfor (let i = length - 1; i >= 0; i--)๏ผ‰๏ผšreduceRight()ใ€findLast() ๅ’Œ findLastIndex()ใ€‚
  5. reduce ๅ’Œ reduceRight ๅ…ทๆœ‰็•ฅๅพฎไธๅŒ็š„็ญพๅ๏ผŒๅนถไธๆ€ปๆ˜ฏไปŽ็ฌฌไธ€ไธช/ๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ๅผ€ๅง‹ใ€‚

้€š็”จๆ•ฐ็ป„ๆ–นๆณ•

ๆ•ฐ็ป„ๆ–นๆณ•ๆ€ปๆ˜ฏ้€š็”จ็š„โ€”โ€”ๅฎƒไปฌไธ่ฎฟ้—ฎๆ•ฐ็ป„ๅฏน่ฑก็š„ไปปไฝ•ๅ†…้ƒจๆ•ฐๆฎใ€‚ๅฎƒไปฌๅช้€š่ฟ‡ length ๅฑžๆ€งๅ’Œ็ดขๅผ•่ฎฟ้—ฎๆ•ฐ็ป„ๅ…ƒ็ด ใ€‚่ฟ™ๆ„ๅ‘ณ็€ๅฎƒไปฌไนŸๅฏไปฅๅœจ็ฑปๆ•ฐ็ป„ๅฏน่ฑกไธŠ่ฐƒ็”จใ€‚

js
const arrayLike = {
  0: "a",
  1: "b",
  length: 2,
};
console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'

้•ฟๅบฆๅฑžๆ€ง็š„่ง„่ŒƒๅŒ–

length ๅฑžๆ€ง่ขซ่ฝฌๆขไธบไธ€ไธชๆ•ฐๅญ—๏ผŒ่ขซๆˆชๆ–ญไธบไธ€ไธชๆ•ดๆ•ฐ๏ผŒ็„ถๅŽๅ›บๅฎšไธบ 0 ๅˆฐ 253 - 1 ไน‹้—ด็š„่Œƒๅ›ดใ€‚NaN ๅ˜ๆˆ 0๏ผŒๆ‰€ไปฅๅณไฝฟ length ๆฒกๆœ‰ๅ‡บ็Žฐๆˆ–ๆ˜ฏ undefined๏ผŒๅฎƒไนŸไผš่กจ็Žฐๅพ—ๅฅฝๅƒๅฎƒ็š„ๅ€ผๆ˜ฏ 0ใ€‚

JavaScript ้ฟๅ…ๅฐ† length ่ฎพ็ฝฎไธบไธๅฎ‰ๅ…จ็š„ๆ•ดๆ•ฐใ€‚ๅฆ‚ๆžœ length ๅฐ†่ขซ่ฎพ็ฝฎไธบๅคงไบŽ 253 - 1 ็š„ๆ•ฐๅญ—๏ผŒๅˆ™ๆ‰€ๆœ‰ๅ†…็ฝฎๆ–นๆณ•้ƒฝๅฐ†ๆŠ›ๅ‡บ TypeErrorใ€‚ไฝ†ๆ˜ฏ๏ผŒ็”ฑไบŽๆ•ฐ็ป„็š„ length ๅฑžๆ€งๅœจ่ฎพ็ฝฎไธบๅคงไบŽ 232 ๆ—ถไผšๆŠ›ๅ‡บ้”™่ฏฏ๏ผŒๅ› ๆญค้€šๅธธไธไผš่พพๅˆฐๅฎ‰ๅ…จๆ•ดๆ•ฐ้˜ˆๅ€ผ๏ผŒ้™ค้ž่ฏฅๆ–นๆณ•ๅœจ้žๆ•ฐ็ป„ๅฏน่ฑกไธŠ่ฐƒ็”จใ€‚

js
Array.prototype.flat.call({}); // []

ไธ€ไบ›ๆ•ฐ็ป„ๆ–นๆณ•ไผš่ฎพ็ฝฎๆ•ฐ็ป„ๅฏน่ฑก็š„ length ๅฑžๆ€งใ€‚ๅฎƒไปฌๆ€ปๆ˜ฏๅœจ่ง„่ŒƒๅŒ–ๅŽ่ฎพ็ฝฎๅ€ผ๏ผŒๅ› ๆญค length ๆ€ปๆ˜ฏไปฅๆ•ดๆ•ฐ็ป“ๅฐพใ€‚

js
const a = { length: 0.7 };
Array.prototype.push.call(a);
console.log(a.length); // 0

็ฑปๆ•ฐ็ป„ๅฏน่ฑก

ๆœฏ่ฏญ็ฑปๆ•ฐ็ป„ๅฏน่ฑกๆŒ‡็š„ๆ˜ฏๅœจไธŠ้ขๆ่ฟฐ็š„ length ่ฝฌๆข่ฟ‡็จ‹ไธญไธๆŠ›ๅ‡บ็š„ไปปไฝ•ๅฏน่ฑกใ€‚ๅœจๅฎž่ทตไธญ๏ผŒ่ฟ™ๆ ท็š„ๅฏน่ฑกๅบ”่ฏฅๅฎž้™…ๅ…ทๆœ‰ length ๅฑžๆ€ง๏ผŒๅนถไธ”็ดขๅผ•ๅ…ƒ็ด ็š„่Œƒๅ›ดๅœจ 0 ๅˆฐ length - 1 ไน‹้—ดใ€‚๏ผˆๅฆ‚ๆžœๅฎƒๆฒกๆœ‰ๆ‰€ๆœ‰็š„็ดขๅผ•๏ผŒๅฎƒๅฐ†ๅœจๅŠŸ่ƒฝไธŠ็ญ‰ๅŒไบŽ็จ€็–ๆ•ฐ็ป„ใ€‚๏ผ‰

่ฎธๅคš DOM ๅฏน่ฑก้ƒฝๆ˜ฏ็ฑปๆ•ฐ็ป„ๅฏน่ฑกโ€”โ€”ไพ‹ๅฆ‚ NodeList ๅ’Œ HTMLCollectionใ€‚arguments ๅฏน่ฑกไนŸๆ˜ฏ็ฑปๆ•ฐ็ป„ๅฏน่ฑกใ€‚ไฝ ๅฏไปฅๅœจๅฎƒไปฌไธŠ่ฐƒ็”จๆ•ฐ็ป„ๆ–นๆณ•๏ผŒๅณไฝฟๅฎƒไปฌๆœฌ่บซๆฒกๆœ‰่ฟ™ไบ›ๆ–นๆณ•ใ€‚

js
function f() {
  console.log(Array.prototype.join.call(arguments, "+"));
}

f("a", "b"); // 'a+b'

ๆž„้€ ๅ‡ฝๆ•ฐ

Array()

ๅˆ›ๅปบไธ€ไธชๆ–ฐ็š„ Array ๅฏน่ฑกใ€‚

้™ๆ€ๅฑžๆ€ง

Array[Symbol.species]

่ฟ”ๅ›ž Array ๆž„้€ ๅ‡ฝๆ•ฐใ€‚

้™ๆ€ๆ–นๆณ•

Array.from()

ไปŽๆ•ฐ็ป„็ฑปๅฏน่ฑกๆˆ–ๅฏ่ฟญไปฃๅฏน่ฑกๅˆ›ๅปบไธ€ไธชๆ–ฐ็š„ Array ๅฎžไพ‹ใ€‚

Array.fromAsync()

ไปŽๅผ‚ๆญฅๅฏ่ฟญไปฃใ€ๅฏ่ฟญไปฃๆˆ–็ฑปๆ•ฐ็ป„ๅฏน่ฑกๅˆ›ๅปบๆ–ฐ็š„ Array ๅฎžไพ‹ใ€‚

Array.isArray()

ๅฆ‚ๆžœๅ‚ๆ•ฐๆ˜ฏๆ•ฐ็ป„ๅˆ™่ฟ”ๅ›ž true ๏ผŒๅฆๅˆ™่ฟ”ๅ›ž false ใ€‚

Array.of()

ๅˆ›ๅปบไธ€ไธชๆ–ฐ็š„ Array ๅฎžไพ‹๏ผŒๅ…ทๆœ‰ๅฏๅ˜ๆ•ฐ้‡็š„ๅ‚ๆ•ฐ๏ผŒ่€Œไธ็ฎกๅ‚ๆ•ฐ็š„ๆ•ฐ้‡ๆˆ–็ฑปๅž‹ใ€‚

ๅฎžไพ‹ๅฑžๆ€ง

ไปฅไธ‹ๅฑžๆ€งๅœจ Array.prototype ไธŠๅฎšไน‰๏ผŒๅนถ็”ฑๆ‰€ๆœ‰ Array ๅฎžไพ‹ๅ…ฑไบซใ€‚

Array.prototype.constructor

ๅˆ›ๅปบๅฎžไพ‹ๅฏน่ฑก็š„ๆž„้€ ๅ‡ฝๆ•ฐใ€‚ๅฏนไบŽ Array ๅฎžไพ‹๏ผŒๅˆๅง‹ๅ€ผๆ˜ฏ Array ๆž„้€ ๅ‡ฝๆ•ฐใ€‚

Array.prototype[Symbol.unscopables]

ๅŒ…ๅซ ES2015 ็‰ˆๆœฌไน‹ๅ‰ ECMAScript ๆ ‡ๅ‡†ไธญๆฒกๆœ‰ๅŒ…ๅซ็š„ๅฑžๆ€งๅ๏ผŒๅœจไฝฟ็”จ with ็ป‘ๅฎš่ฏญๅฅๆ—ถไผš่ขซๅฟฝ็•ฅใ€‚

ไปฅไธ‹ๅฑžๆ€งๆ˜ฏๆฏไธช Array ๅฎžไพ‹่‡ชๆœ‰็š„ๅฑžๆ€งใ€‚

Array.prototype.length

ๅๆ˜ ๆ•ฐ็ป„ไธญๅ…ƒ็ด ็š„ๆ•ฐ้‡ใ€‚

ๅฎžไพ‹ๆ–นๆณ•

Array.prototype.at()

่ฟ”ๅ›ž็ป™ๅฎš็ดขๅผ•ๅค„็š„ๆ•ฐ็ป„ๅ…ƒ็ด ใ€‚ๆŽฅๅ—ไปŽๆœ€ๅŽไธ€้กนๅพ€ๅ›ž่ฎก็ฎ—็š„่ดŸๆ•ดๆ•ฐใ€‚

Array.prototype.concat()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒ่ฏฅๆ•ฐ็ป„็”ฑ่ขซ่ฐƒ็”จ็š„ๆ•ฐ็ป„ไธŽๅ…ถไป–ๆ•ฐ็ป„ๆˆ–ๅ€ผ่ฟžๆŽฅๅฝขๆˆใ€‚

Array.prototype.copyWithin()

ๅœจๆ•ฐ็ป„ๅ†…ๅคๅˆถๆ•ฐ็ป„ๅ…ƒ็ด ๅบๅˆ—ใ€‚

Array.prototype.entries()

่ฟ”ๅ›žไธ€ไธชๆ–ฐ็š„ๆ•ฐ็ป„่ฟญไปฃๅ™จๅฏน่ฑก๏ผŒๅ…ถไธญๅŒ…ๅซๆ•ฐ็ป„ไธญๆฏไธช็ดขๅผ•็š„้”ฎ/ๅ€ผๅฏนใ€‚

Array.prototype.every()

ๅฆ‚ๆžœ่ฐƒ็”จๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ้ƒฝๆปก่ถณๆต‹่ฏ•ๅ‡ฝๆ•ฐ๏ผŒๅˆ™่ฟ”ๅ›ž trueใ€‚

Array.prototype.fill()

็”จ้™ๆ€ๅ€ผๅกซๅ……ๆ•ฐ็ป„ไธญไปŽๅผ€ๅง‹็ดขๅผ•ๅˆฐ็ป“ๆŸ็ดขๅผ•็š„ๆ‰€ๆœ‰ๅ…ƒ็ด ใ€‚

Array.prototype.filter()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒๅ…ถไธญๅŒ…ๅซ่ฐƒ็”จๆ‰€ๆไพ›็š„็ญ›้€‰ๅ‡ฝๆ•ฐ่ฟ”ๅ›žไธบ true ็š„ๆ‰€ๆœ‰ๆ•ฐ็ป„ๅ…ƒ็ด ใ€‚

Array.prototype.find()

่ฟ”ๅ›žๆ•ฐ็ป„ไธญๆปก่ถณๆไพ›็š„ๆต‹่ฏ•ๅ‡ฝๆ•ฐ็š„็ฌฌไธ€ไธชๅ…ƒ็ด ็š„ๅ€ผ๏ผŒๅฆ‚ๆžœๆฒกๆœ‰ๆ‰พๅˆฐๅˆ้€‚็š„ๅ…ƒ็ด ๏ผŒๅˆ™่ฟ”ๅ›ž undefinedใ€‚

Array.prototype.findIndex()

่ฟ”ๅ›žๆ•ฐ็ป„ไธญๆปก่ถณๆไพ›็š„ๆต‹่ฏ•ๅ‡ฝๆ•ฐ็š„็ฌฌไธ€ไธชๅ…ƒ็ด ็š„็ดขๅผ•๏ผŒๅฆ‚ๆžœๆฒกๆœ‰ๆ‰พๅˆฐๅˆ้€‚็š„ๅ…ƒ็ด ๏ผŒๅˆ™่ฟ”ๅ›ž -1ใ€‚

Array.prototype.findLast()

่ฟ”ๅ›žๆ•ฐ็ป„ไธญๆปก่ถณๆไพ›็š„ๆต‹่ฏ•ๅ‡ฝๆ•ฐ็š„ๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ็š„ๅ€ผ๏ผŒๅฆ‚ๆžœๆฒกๆœ‰ๆ‰พๅˆฐๅˆ้€‚็š„ๅ…ƒ็ด ๏ผŒๅˆ™่ฟ”ๅ›ž undefinedใ€‚

Array.prototype.findLastIndex()

่ฟ”ๅ›žๆ•ฐ็ป„ไธญๆปก่ถณๆ‰€ๆไพ›ๆต‹่ฏ•ๅ‡ฝๆ•ฐ็š„ๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ็š„็ดขๅผ•๏ผŒๅฆ‚ๆžœๆฒกๆœ‰ๆ‰พๅˆฐๅˆ้€‚็š„ๅ…ƒ็ด ๏ผŒๅˆ™่ฟ”ๅ›ž -1ใ€‚

Array.prototype.flat()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒๆ‰€ๆœ‰ๅญๆ•ฐ็ป„ๅ…ƒ็ด ้€’ๅฝ’ๅœฐ่ฟžๆŽฅๅˆฐๅ…ถไธญ๏ผŒ็›ดๅˆฐๆŒ‡ๅฎš็š„ๆทฑๅบฆใ€‚

Array.prototype.flatMap()

ๅฏน่ฐƒ็”จๆ•ฐ็ป„็š„ๆฏไธชๅ…ƒ็ด ่ฐƒ็”จ็ป™ๅฎš็š„ๅ›ž่ฐƒๅ‡ฝๆ•ฐ๏ผŒ็„ถๅŽๅฐ†็ป“ๆžœๅฑ•ๅนณไธ€ๅฑ‚๏ผŒ่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„ใ€‚

Array.prototype.forEach()

ๅฏน่ฐƒ็”จๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ่ฐƒ็”จ็ป™ๅฎš็š„ๅ‡ฝๆ•ฐใ€‚

Array.prototype.includes()

็กฎๅฎš่ฐƒ็”จๆ•ฐ็ป„ๆ˜ฏๅฆๅŒ…ๅซไธ€ไธชๅ€ผ๏ผŒๆ นๆฎๆƒ…ๅ†ต่ฟ”ๅ›ž true ๆˆ– falseใ€‚

Array.prototype.indexOf()

่ฟ”ๅ›žๅœจ่ฐƒ็”จๆ•ฐ็ป„ไธญๅฏไปฅๆ‰พๅˆฐ็ป™ๅฎšๅ…ƒ็ด ็š„็ฌฌไธ€ไธช๏ผˆๆœ€ๅฐ๏ผ‰็ดขๅผ•ใ€‚

Array.prototype.join()

ๅฐ†ๆ•ฐ็ป„็š„ๆ‰€ๆœ‰ๅ…ƒ็ด ่ฟžๆŽฅไธบๅญ—็ฌฆไธฒใ€‚

Array.prototype.keys()

่ฟ”ๅ›žไธ€ไธชๆ–ฐ็š„ๆ•ฐ็ป„่ฟญไปฃๅ™จ๏ผŒๅ…ถไธญๅŒ…ๅซ่ฐƒ็”จๆ•ฐ็ป„ไธญๆฏไธช็ดขๅผ•็š„้”ฎใ€‚

Array.prototype.lastIndexOf()

่ฟ”ๅ›žๅœจ่ฐƒ็”จๆ•ฐ็ป„ไธญๅฏไปฅๆ‰พๅˆฐ็ป™ๅฎšๅ…ƒ็ด ็š„ๆœ€ๅŽไธ€ไธช๏ผˆๆœ€ๅคง๏ผ‰็ดขๅผ•๏ผŒๅฆ‚ๆžœๆ‰พไธๅˆฐๅˆ™่ฟ”ๅ›ž -1ใ€‚

Array.prototype.map()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒๅ…ถไธญๅŒ…ๅซๅฏน่ฐƒ็”จๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ่ฐƒ็”จๅ‡ฝๆ•ฐ็š„็ป“ๆžœใ€‚

Array.prototype.pop()

ไปŽๆ•ฐ็ป„ไธญ็งป้™คๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ๅนถ่ฟ”ๅ›ž่ฏฅๅ…ƒ็ด ใ€‚

Array.prototype.push()

ๅœจๆ•ฐ็ป„ๆœซๅฐพๆทปๅŠ ไธ€ไธชๆˆ–ๅคšไธชๅ…ƒ็ด ๏ผŒๅนถ่ฟ”ๅ›žๆ•ฐ็ป„ๆ–ฐ็š„ lengthใ€‚

Array.prototype.reduce()

ๅฏนๆ•ฐ็ป„็š„ๆฏไธชๅ…ƒ็ด ๏ผˆไปŽๅทฆๅˆฐๅณ๏ผ‰ๆ‰ง่กŒ็”จๆˆทๆไพ›็š„โ€œreducerโ€ๅ›ž่ฐƒๅ‡ฝๆ•ฐ๏ผŒๅฐ†ๅ…ถ็ฎ€ๅŒ–ไธบๅ•ไธชๅ€ผใ€‚

Array.prototype.reduceRight()

ๅฏนๆ•ฐ็ป„็š„ๆฏไธชๅ…ƒ็ด ๏ผˆไปŽๅณๅˆฐๅทฆ๏ผ‰ๆ‰ง่กŒ็”จๆˆทๆไพ›็š„โ€œreducerโ€ๅ›ž่ฐƒๅ‡ฝๆ•ฐ๏ผŒๅฐ†ๅ…ถ็ฎ€ๅŒ–ไธบๅ•ไธชๅ€ผใ€‚

Array.prototype.reverse()

ๅฐฑๅœฐๅ่ฝฌๆ•ฐ็ป„ไธญๅ…ƒ็ด ็š„้กบๅบใ€‚๏ผˆๅ‰้ขๅ˜ๆˆๅŽ้ข๏ผŒๅŽ้ขๅ˜ๆˆๅ‰้ขใ€‚๏ผ‰

Array.prototype.shift()

ไปŽๆ•ฐ็ป„ไธญ็งป้™ค็ฌฌไธ€ไธชๅ…ƒ็ด ๅนถ่ฟ”ๅ›ž่ฏฅๅ…ƒ็ด ใ€‚

Array.prototype.slice()

ๆๅ–่ฐƒ็”จๆ•ฐ็ป„็š„ไธ€้ƒจๅˆ†ๅนถ่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„ใ€‚

Array.prototype.some()

ๅฆ‚ๆžœ่ฐƒ็”จๆ•ฐ็ป„ไธญ่‡ณๅฐ‘ๆœ‰ไธ€ไธชๅ…ƒ็ด ๆปก่ถณๆไพ›็š„ๆต‹่ฏ•ๅ‡ฝๆ•ฐ๏ผŒๅˆ™่ฟ”ๅ›ž trueใ€‚

Array.prototype.sort()

ๅฏนๆ•ฐ็ป„็š„ๅ…ƒ็ด ่ฟ›่กŒๆŽ’ๅบๅนถ่ฟ”ๅ›ž่ฏฅๆ•ฐ็ป„ใ€‚

Array.prototype.splice()

ไปŽๆ•ฐ็ป„ไธญๆทปๅŠ ๅ’Œ/ๆˆ–ๅˆ ้™คๅ…ƒ็ด ใ€‚

Array.prototype.toLocaleString()

่ฟ”ๅ›žไธ€ไธช่กจ็คบ่ฐƒ็”จๆ•ฐ็ป„ๅŠๅ…ถๅ…ƒ็ด ็š„ๆœฌๅœฐๅŒ–ๅญ—็ฌฆไธฒใ€‚้‡ๅ†™ Object.prototype.toLocaleString() ๆ–นๆณ•ใ€‚

Array.prototype.toReversed()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒ่ฏฅๆ•ฐ็ป„็š„ๅ…ƒ็ด ้กบๅบ่ขซๅ่ฝฌ๏ผŒไฝ†ไธๆ”นๅ˜ๅŽŸๅง‹ๆ•ฐ็ป„ใ€‚

Array.prototype.toSorted()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒๅ…ถไธญๅ…ƒ็ด ๆŒ‰ๅ‡ๅบๆŽ’ๅบ๏ผŒ่€Œไธๆ”นๅ˜ๅŽŸๅง‹ๆ•ฐ็ป„ใ€‚

Array.prototype.toSpliced()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒๅœจ็ป™ๅฎš็ดขๅผ•ๅค„ๅˆ ้™คๅ’Œ/ๆˆ–ๆ›ฟๆขไบ†ไธ€ไบ›ๅ…ƒ็ด ๏ผŒ่€Œไธๆ”นๅ˜ๅŽŸๅง‹ๆ•ฐ็ป„ใ€‚

Array.prototype.toString()

่ฟ”ๅ›žไธ€ไธช่กจ็คบ่ฐƒ็”จๆ•ฐ็ป„ๅŠๅ…ถๅ…ƒ็ด ็š„ๅญ—็ฌฆไธฒใ€‚้‡ๅ†™ Object.prototype.toString() ๆ–นๆณ•ใ€‚

Array.prototype.unshift()

ๅœจๆ•ฐ็ป„็š„ๅ‰้ขๆทปๅŠ ไธ€ไธชๆˆ–ๅคšไธชๅ…ƒ็ด ๏ผŒๅนถ่ฟ”ๅ›žๆ•ฐ็ป„ๆ–ฐ็š„ lengthใ€‚

Array.prototype.values()

่ฟ”ๅ›žไธ€ไธชๆ–ฐ็š„ๆ•ฐ็ป„่ฟญไปฃๅ™จๅฏน่ฑก๏ผŒ่ฏฅๅฏน่ฑกๅŒ…ๅซๆ•ฐ็ป„ไธญๆฏไธช็ดขๅผ•็š„ๅ€ผใ€‚

Array.prototype.with()

่ฟ”ๅ›žไธ€ไธชๆ–ฐๆ•ฐ็ป„๏ผŒๅ…ถไธญ็ป™ๅฎš็ดขๅผ•ๅค„็š„ๅ…ƒ็ด ๆ›ฟๆขไธบ็ป™ๅฎšๅ€ผ๏ผŒ่€Œไธๆ”นๅ˜ๅŽŸๅง‹ๆ•ฐ็ป„ใ€‚

Array.prototype[Symbol.iterator]()

้ป˜่ฎคๆƒ…ๅ†ตไธ‹๏ผŒ่ฏฅๆ–นๆณ•ไธบ values() ๆ–นๆณ•็š„ๅˆซๅใ€‚

็คบไพ‹

ๆœฌ่Š‚ๆไพ›ไธ€ไบ› JavaScript ไธญๅธธ่ง็š„ๆ•ฐ็ป„ๆ“ไฝœ็คบไพ‹ใ€‚

ๅค‡ๆณจ๏ผš ๅฆ‚ๆžœไฝ ่ฟ˜ไธ็†Ÿๆ‚‰ๆ•ฐ็ป„็š„ๅŸบ็ก€็Ÿฅ่ฏ†๏ผŒๅฏไปฅ่€ƒ่™‘ๅ…ˆ่ฏปไธ€ไธ‹ JavaScript ็ฌฌไธ€ๆญฅ๏ผšๆ•ฐ็ป„๏ผŒๅฎƒ่งฃ้‡Šไบ†ๆ•ฐ็ป„ๆ˜ฏไป€ไนˆ๏ผŒ่ฟ˜ๅŒ…ๆ‹ฌๅ…ถไป–ๅธธ่ง็š„ๆ•ฐ็ป„ๆ“ไฝœ็คบไพ‹ใ€‚

ๅˆ›ๅปบๆ•ฐ็ป„

ไธ‹้ข็š„ไพ‹ๅญๅฑ•็คบไบ†ไธ‰็งๅˆ›ๅปบๆ–ฐๆ•ฐ็ป„็š„ๆ–นๆณ•๏ผš้ฆ–ๅ…ˆไฝฟ็”จๆ•ฐ็ป„ๅญ—้ข้‡๏ผŒ็„ถๅŽไฝฟ็”จ Array() ๆž„้€ ๅ‡ฝๆ•ฐ๏ผŒๆœ€ๅŽไฝฟ็”จ String.prototype.split() ไปŽๅญ—็ฌฆไธฒๆž„ๅปบๆ•ฐ็ป„ใ€‚

js
// ไฝฟ็”จๆ•ฐ็ป„ๅญ—้ข้‡ๅˆ›ๅปบ็š„ 'fruits' ๆ•ฐ็ป„ใ€‚
const fruits = ["Apple", "Banana"];
console.log(fruits.length);
// 2

// ไฝฟ็”จ Array() ๆž„ๅปบๅ‡ฝๆ•ฐๅˆ›ๅปบ็š„ 'fruits2' ๆ•ฐ็ป„ใ€‚
const fruits2 = new Array("Apple", "Banana");
console.log(fruits2.length);
// 2

// ไฝฟ็”จ String.prototype.split() ๆ–นๆณ•ๅˆ›ๅปบ็š„ 'fruits3' ๆ•ฐ็ป„ใ€‚
const fruits3 = "Apple, Banana".split(", ");
console.log(fruits3.length);
// 2

ไปŽๆ•ฐ็ป„ไธญๅˆ›ๅปบไธ€ไธชๅญ—็ฌฆไธฒ

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ join() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญๅˆ›ๅปบไธ€ไธชๅญ—็ฌฆไธฒใ€‚

js
const fruits = ["Apple", "Banana"];
const fruitsString = fruits.join(", ");
console.log(fruitsString);
// "Apple, Banana"

้€š่ฟ‡็ดขๅผ•่ฎฟ้—ฎๆ•ฐ็ป„ๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญๅฑ•็คบไบ†ๅฆ‚ไฝ•้€š่ฟ‡ๆŒ‡ๅฎšๅฎƒไปฌๅœจๆ•ฐ็ป„ไธญ็š„ไฝ็ฝฎ็š„็ดขๅผ•ๅทๆฅ่ฎฟ้—ฎ fruits ๆ•ฐ็ป„ไธญ็š„ๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Banana"];

// ๆ•ฐ็ป„็ฌฌไธ€ไธชๅ…ƒ็ด ็š„็ดขๅผ•ๅง‹็ปˆไธบ 0ใ€‚
fruits[0]; // Apple

// ๆ•ฐ็ป„็ฌฌไบŒไธชๅ…ƒ็ด ็š„็ดขๅผ•ๅง‹็ปˆไธบ 1ใ€‚
fruits[1]; // Banana

// ๆ•ฐ็ป„ๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ็š„็ดขๅผ•ๆ€ปๆ˜ฏๆฏ”ๆ•ฐ็ป„็š„้•ฟๅบฆๅฐ 1ใ€‚
fruits[fruits.length - 1]; // Banana

// ไฝฟ็”จๅคงไบŽๆ•ฐ็ป„้•ฟๅบฆ็š„็ดขๅผ•ไผš่ฟ”ๅ›ž"undefined"
fruits[99]; // undefined

ๅœจๆ•ฐ็ป„ไธญๆŸฅๆ‰พๅ…ƒ็ด ็š„็ดขๅผ•

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ indexOf() ๆ–นๆณ•ๆŸฅๆ‰พๅญ—็ฌฆไธฒ "Banana" ๅœจ fruits ๆ•ฐ็ป„ไธญ็š„ไฝ็ฝฎ๏ผˆ็ดขๅผ•๏ผ‰ใ€‚

js
const fruits = ["Apple", "Banana"];
console.log(fruits.indexOf("Banana"));
// 1

ๆฃ€ๆŸฅๆ•ฐ็ป„ๆ˜ฏๅฆๅŒ…ๅซๆŸไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญๅฑ•็คบไบ†ไธค็งๆฃ€ๆŸฅ fruits ๆ•ฐ็ป„ๆ˜ฏๅฆๅŒ…ๅซ "Banana" ๅ’Œ "Cherry" ็š„ๆ–นๆณ•๏ผš้ฆ–ๅ…ˆไฝฟ็”จ includes() ๆ–นๆณ•๏ผŒ็„ถๅŽไฝฟ็”จ indexOf() ๆ–นๆณ•ๆฅๆต‹่ฏ•็ดขๅผ•ๅ€ผไธๆ˜ฏ -1ใ€‚

js
const fruits = ["Apple", "Banana"];

fruits.includes("Banana"); // true
fruits.includes("Cherry"); // false

// ๅฆ‚ๆžœ indexOf() ไธ่ฟ”ๅ›ž -1๏ผŒๅˆ™ๆ•ฐ็ป„ๅŒ…ๅซ็ป™ๅฎš็š„ๅ…ƒ็ด ใ€‚
fruits.indexOf("Banana") !== -1; // true
fruits.indexOf("Cherry") !== -1; // false

ๅฐ†ๅ…ƒ็ด ๆทปๅŠ ๅˆฐๆ•ฐ็ป„ไธญ

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ push() ๆ–นๆณ•ๅ‘ fruits ๆ•ฐ็ป„่ฟฝๅŠ ไธ€ไธชๆ–ฐๅญ—็ฌฆไธฒใ€‚

js
const fruits = ["Apple", "Banana"];
const newLength = fruits.push("Orange");
console.log(fruits);
// ["Apple", "Banana", "Orange"]
console.log(newLength);
// 3

็งป้™คๆ•ฐ็ป„ไธญ็š„ๆœ€ๅŽไธ€ไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ pop() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญ็งป้™คๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Banana", "Orange"];
const removedItem = fruits.pop();
console.log(fruits);
// ["Apple", "Banana"]
console.log(removedItem);
// Orange

ๅค‡ๆณจ๏ผš pop() ๅช่ƒฝ็”จไบŽไปŽๆ•ฐ็ป„ไธญ็งป้™คๆœ€ๅŽไธ€ไธชๅ…ƒ็ด ใ€‚่‹ฅ่ฆไปŽๆ•ฐ็ป„ๆœซๅฐพ็งป้™คๅคšไธชๅ…ƒ็ด ๏ผŒ่ฏทๅ‚่งไธ‹ไธ€ไธช็คบไพ‹ใ€‚

ไปŽๆ•ฐ็ป„ๆœซๅฐพ็งป้™คๅคšไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ splice() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญ็งป้™คๆœ€ๅŽ 3 ไธชๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Banana", "Strawberry", "Mango", "Cherry"];
const start = -3;
const removedItems = fruits.splice(start);
console.log(fruits);
// ["Apple", "Banana"]
console.log(removedItems);
// ["Strawberry", "Mango", "Cherry"]

ๅฐ†ๆ•ฐ็ป„ๆˆชๆ–ญไธบๅ‰ N ไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ splice() ๆ–นๆณ•ๅฐ† fruits ๆ•ฐ็ป„ๆˆชๆ–ญๅˆฐๅชๅ‰ฉไธ‹ๅ‰ 2 ไธชๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Banana", "Strawberry", "Mango", "Cherry"];
const start = 2;
const removedItems = fruits.splice(start);
console.log(fruits);
// ["Apple", "Banana"]
console.log(removedItems);
// ["Strawberry", "Mango", "Cherry"]

็งป้™คๆ•ฐ็ป„ไธญ็š„็ฌฌไธ€ไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ shift() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญ็งป้™ค็ฌฌไธ€ไธชๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Banana"];
const removedItem = fruits.shift();
console.log(fruits);
// ["Banana"]
console.log(removedItem);
// Apple

ๅค‡ๆณจ๏ผš shift() ๅช่ƒฝ็”จไบŽไปŽๆ•ฐ็ป„ไธญ็งป้™ค็ฌฌไธ€ไธชๅ…ƒ็ด ใ€‚่‹ฅ่ฆไปŽๆ•ฐ็ป„็š„ๅผ€ๅคด็งป้™คๅคšไธชๅ…ƒ็ด ๏ผŒ่ฏทๅ‚่งไธ‹ไธ€ไธช็คบไพ‹ใ€‚

ไปŽๆ•ฐ็ป„ๅผ€ๅคด็งป้™คๅคšไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ splice() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญ็งป้™คๅ‰ 3 ไธชๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Strawberry", "Cherry", "Banana", "Mango"];
const start = 0;
const deleteCount = 3;
const removedItems = fruits.splice(start, deleteCount);
console.log(fruits);
// ["Banana", "Mango"]
console.log(removedItems);
// ["Apple", "Strawberry", "Cherry"]

ๅ‘ๆ•ฐ็ป„ๅผ€ๅคดๆทปๅŠ ไธ€ไธชๆ–ฐ็š„ๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ unshift() ๆ–นๆณ•ๅœจ็ดขๅผ• 0 ๅค„ๅ‘ fruits ๆ•ฐ็ป„ไธญๆทปๅŠ ไธ€ไธชๆ–ฐๅ…ƒ็ด โ€”โ€”ไฝฟๅ…ถๆˆไธบๆ•ฐ็ป„ไธญๆ–ฐ็š„็ฌฌไธ€ๅ…ƒ็ด ใ€‚

js
const fruits = ["Banana", "Mango"];
const newLength = fruits.unshift("Strawberry");
console.log(fruits);
// ["Strawberry", "Banana", "Mango"]
console.log(newLength);
// 3

ๆŒ‰็ดขๅผ•็งป้™คๅ•ไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ splice() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญๅˆ ้™คๅญ—็ฌฆไธฒ "Banana"โ€”โ€”้€š่ฟ‡ๆŒ‡ๅฎš "Banana" ็š„็ดขๅผ•ไฝ็ฝฎใ€‚

js
const fruits = ["Strawberry", "Banana", "Mango"];
const start = fruits.indexOf("Banana");
const deleteCount = 1;
const removedItems = fruits.splice(start, deleteCount);
console.log(fruits);
// ["Strawberry", "Mango"]
console.log(removedItems);
// ["Banana"]

ๆŒ‰็ดขๅผ•็งป้™คๅคšไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ splice() ๆ–นๆณ•ไปŽ fruits ๆ•ฐ็ป„ไธญๅˆ ้™คๅญ—็ฌฆไธฒ "Banana" ๅ’Œ "Strawberry"โ€”โ€”้€š่ฟ‡ๆŒ‡ๅฎš "Banana" ็š„็ดขๅผ•ไฝ็ฝฎ๏ผŒไปฅๅŠ่ฆ็งป้™ค็š„ๅ…ƒ็ด ๆ€ปๆ•ฐใ€‚

js
const fruits = ["Apple", "Banana", "Strawberry", "Mango"];
const start = 1;
const deleteCount = 2;
const removedItems = fruits.splice(start, deleteCount);
console.log(fruits);
// ["Apple", "Mango"]
console.log(removedItems);
// ["Banana", "Strawberry"]

ๆ›ฟๆขๆ•ฐ็ป„ไธญ็š„ๅคšไธชๅ…ƒ็ด 

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ splice() ๆ–นๆณ•ๅฐ† fruits ๆ•ฐ็ป„ไธญ็š„ๆœ€ๅŽไธคไธชๅ…ƒ็ด ๆ›ฟๆขไธบๆ–ฐๅ…ƒ็ด ใ€‚

js
const fruits = ["Apple", "Banana", "Strawberry"];
const start = -2;
const deleteCount = 2;
const removedItems = fruits.splice(start, deleteCount, "Mango", "Cherry");
console.log(fruits);
// ["Apple", "Mango", "Cherry"]
console.log(removedItems);
// ["Banana", "Strawberry"]

้ๅކๆ•ฐ็ป„

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ for...of ๅพช็Žฏ้ๅކ fruits ๆ•ฐ็ป„๏ผŒๅฐ†ๆฏไธ€ไธชๅ…ƒ็ด ๆ‰“ๅฐๅˆฐๆŽงๅˆถๅฐใ€‚

js
const fruits = ["Apple", "Mango", "Cherry"];
for (const fruit of fruits) {
  console.log(fruit);
}
// Apple
// Mango
// Cherry

ไฝ† for...of ๅชๆ˜ฏ้ๅކไปปๆ„ๆ•ฐ็ป„็š„ไผ—ๅคšๆ–นๆณ•ไน‹ไธ€๏ผ›ๆ›ดๅคšๆ–นๆณ•๏ผŒๅ‚่งๅพช็ŽฏไธŽ่ฟญไปฃ๏ผŒๅนถๆŸฅ็œ‹ every()ใ€filter()ใ€flatMap()ใ€map()ใ€reduce() ๅ’Œ reduceRight() ๆ–นๆณ•โ€”โ€”ๅนถๅ‚่งไธ‹ไธ€ไธช็คบไพ‹๏ผŒ่ฏฅ็คบไพ‹ไฝฟ็”จ forEach() ๆ–นๆณ•ใ€‚

ๅฏนๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ่ฐƒ็”จๅ‡ฝๆ•ฐ

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ forEach() ๆ–นๆณ•ๅœจ fruits ๆ•ฐ็ป„ไธญ็š„ๆฏไธชๅ…ƒ็ด ไธŠ่ฐƒ็”จไธ€ไธชๅ‡ฝๆ•ฐ๏ผ›่ฏฅๅ‡ฝๆ•ฐๅฐ†ๆฏไธชๅ…ƒ็ด ไปฅๅŠๅ…ƒ็ด ็š„็ดขๅผ•ๅทๆ‰“ๅฐๅˆฐๆŽงๅˆถๅฐใ€‚

js
const fruits = ["Apple", "Mango", "Cherry"];
fruits.forEach((item, index, array) => {
  console.log(item, index);
});
// Apple 0
// Mango 1
// Cherry 2

ๅˆๅนถๅคšไธชๆ•ฐ็ป„

ไธ‹้ข็š„ไพ‹ๅญไฝฟ็”จ concat() ๆ–นๆณ•ๅฐ† fruits ๆ•ฐ็ป„ไธŽ moreFruits ๆ•ฐ็ป„ๅˆๅนถ๏ผŒ็”Ÿๆˆไธ€ไธชๆ–ฐ็š„ combinedFruits ๆ•ฐ็ป„ใ€‚ๆณจๆ„๏ผŒfruits ๅ’Œ moreFruits ไฟๆŒไธๅ˜ใ€‚

js
const fruits = ["Apple", "Banana", "Strawberry"];
const moreFruits = ["Mango", "Cherry"];
const combinedFruits = fruits.concat(moreFruits);
console.log(combinedFruits);
// ["Apple", "Banana", "Strawberry", "Mango", "Cherry"]

// The 'fruits' array remains unchanged.
console.log(fruits);
// ["Apple", "Banana", "Strawberry"]

// The 'moreFruits' array also remains unchanged.
console.log(moreFruits);
// ["Mango", "Cherry"]

ๅคๅˆถๆ•ฐ็ป„

ไธ‹้ข็š„ไพ‹ๅญๅฑ•็คบไบ†ไปŽ็Žฐๆœ‰็š„ fruits ๆ•ฐ็ป„ๅˆ›ๅปบๆ–ฐๆ•ฐ็ป„็š„ไธ‰็งๆ–นๆณ•๏ผš้ฆ–ๅ…ˆไฝฟ็”จๅฑ•ๅผ€่ฏญๆณ•๏ผŒ็„ถๅŽไฝฟ็”จ from() ๆ–นๆณ•๏ผŒ็„ถๅŽไฝฟ็”จ slice() ๆ–นๆณ•ใ€‚

js
const fruits = ["Strawberry", "Mango"];

// Create a copy using spread syntax.
const fruitsCopy = [...fruits];
// ["Strawberry", "Mango"]

// Create a copy using the from() method.
const fruitsCopy2 = Array.from(fruits);
// ["Strawberry", "Mango"]

// Create a copy using the slice() method.
const fruitsCopy3 = fruits.slice();
// ["Strawberry", "Mango"]

ๆ‰€ๆœ‰ๅ†…็ฝฎ็š„ๆ•ฐ็ป„ๅคๅˆถๆ“ไฝœ๏ผˆๅฑ•ๅผ€่ฏญๆณ•ใ€Array.from()ใ€Array.prototype.slice() ๅ’Œ Array.prototype.concat()๏ผ‰้ƒฝไผšๅˆ›ๅปบๆต…ๆ‹ท่ดใ€‚ๅฆ‚ๆžœไฝ ๆƒณ่ฆไธ€ไธชๆ•ฐ็ป„็š„ๆทฑๆ‹ท่ด๏ผŒไฝ ๅฏไปฅไฝฟ็”จ JSON.stringify() ๅฐ†ๆ•ฐ็ป„่ฝฌๆขๆˆไธ€ไธช JSON ๅญ—็ฌฆไธฒ๏ผŒ็„ถๅŽไฝฟ็”จ JSON.parse() ๅฐ†ๅญ—็ฌฆไธฒ่ฝฌๆขๅ›žไธ€ไธชๅฎŒๅ…จ็‹ฌ็ซ‹ไบŽๅŽŸๆ•ฐ็ป„็š„ๆ–ฐๆ•ฐ็ป„ใ€‚

js
const fruitsDeepCopy = JSON.parse(JSON.stringify(fruits));

ไฝ ่ฟ˜ๅฏไปฅไฝฟ็”จ structuredClone() ๆ–นๆณ•ๅˆ›ๅปบๆทฑๆ‹ท่ด๏ผŒ่ฏฅๆ–นๆณ•็š„ไผ˜็‚นๆ˜ฏๅ…่ฎธๆบไปฃ็ ไธญ็š„ๅฏ่ฝฌ็งปๅฏน่ฑก่ขซ่ฝฌ็งปๅˆฐๆ–ฐ็š„ๅ‰ฏๆœฌ๏ผŒ่€Œไธไป…ไป…ๆ˜ฏๅ…‹้š†ใ€‚

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

js
const fruits = ["Strawberry", "Mango"];
const fruitsAlias = fruits;
// 'fruits' ๅ’Œ 'fruitsAlias' ๆ˜ฏๅŒไธ€ไธชๅฏน่ฑก๏ผŒไธฅๆ ผ็›ธ็ญ‰ใ€‚
fruits === fruitsAlias; // true
// ๅฏน 'fruits' ๆ•ฐ็ป„็š„ไปปไฝ•ๆ›ดๆ”นไนŸไผšๆ›ดๆ”น 'fruitsAlias'ใ€‚
fruits.unshift("Apple", "Banana");
console.log(fruits);
// ['Apple', 'Banana', 'Strawberry', 'Mango']
console.log(fruitsAlias);
// ['Apple', 'Banana', 'Strawberry', 'Mango']

ๅˆ›ๅปบไบŒ็ปดๆ•ฐ็ป„

ไธ‹้ข็š„ไพ‹ๅญๅˆ›ๅปบไบ†ไธ€ไธชไปฃ่กจๆฃ‹็›˜็š„ไบŒ็ปดๅญ—็ฌฆไธฒๆ•ฐ็ป„ใ€‚็ฌฌไธ€ๆญฅๆ˜ฏๅฐ† board[6][4] ไธญ็š„ 'p' ๅคๅˆถๅˆฐ board[4][4]ใ€‚ๅŽŸๆœฌ็š„ [6][4] ไฝ็ฝฎๅˆ™่ขซ่ฎพ็ฝฎไธบ็ฉบๆ ผใ€‚

js
const board = [
  ["R", "N", "B", "Q", "K", "B", "N", "R"],
  ["P", "P", "P", "P", "P", "P", "P", "P"],
  [" ", " ", " ", " ", " ", " ", " ", " "],
  [" ", " ", " ", " ", " ", " ", " ", " "],
  [" ", " ", " ", " ", " ", " ", " ", " "],
  [" ", " ", " ", " ", " ", " ", " ", " "],
  ["p", "p", "p", "p", "p", "p", "p", "p"],
  ["r", "n", "b", "q", "k", "b", "n", "r"],
];

console.log(`${board.join("\n")}\n\n`);

// ๅฐ†ๅ›ฝ็Ž‹็š„ๅ…ตๅ‘ๅ‰็งปๅŠจ 2
board[4][4] = board[6][4];
board[6][4] = " ";
console.log(board.join("\n"));

ไธ‹้ขๆ˜ฏ่พ“ๅ‡บ๏ผš

R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
 , , , , , , ,
 , , , , , , ,
 , , , , , , ,
 , , , , , , ,
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r

R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
 , , , , , , ,
 , , , , , , ,
 , , , ,p, , ,
 , , , , , , ,
p,p,p,p, ,p,p,p
r,n,b,q,k,b,n,r

ไฝฟ็”จๆ•ฐ็ป„ๅฐ†ไธ€็ป„ๅ€ผๅˆถๆˆ่กจๆ ผ

js
const values = [];
for (let x = 0; x < 10; x++) {
  values.push([2 ** x, 2 * x ** 2]);
}
console.table(values);

็ป“ๆžœไธบ๏ผš

// The first column is the index
0  1    0
1  2    2
2  4    8
3  8    18
4  16   32
5  32   50
6  64   72
7  128  98
8  256  128
9  512  162

ไฝฟ็”จๅŒน้…็š„็ป“ๆžœๅˆ›ๅปบๆ•ฐ็ป„

RegExp ๅ’Œๅญ—็ฌฆไธฒไน‹้—ด็š„ๅŒน้…็ป“ๆžœๅฏไปฅๅˆ›ๅปบไธ€ไธช JavaScript ๆ•ฐ็ป„๏ผŒ่ฏฅๆ•ฐ็ป„ๅ…ทๆœ‰ๅŒน้…ไฟกๆฏ็š„ๅฑžๆ€งๅ’Œๅ…ƒ็ด ใ€‚่ฟ™ๆ ท็š„ๆ•ฐ็ป„็”ฑ RegExp.prototype.exec() ๅ’Œ String.prototype.match() ่ฟ”ๅ›žใ€‚

ไพ‹ๅฆ‚๏ผš

js
// ๅŒน้…ไธ€ไธช d ๅŽ่ทŸไธ€ไธชๆˆ–ๅคšไธช b ๅŽ่ทŸไธ€ไธช d
// ่ฎฐไฝๅŒน้…็š„ b ๅ’ŒๅŽ้ข็š„ d
// ๅฟฝ็•ฅๅคงๅฐๅ†™

const myRe = /d(b+)(d)/i;
const execResult = myRe.exec("cdbBdbsbz");

console.log(execResult.input); // 'cdbBdbsbz'
console.log(execResult.index); // 1
console.log(execResult); // [ "dbBd", "bB", "d" ]

ๆœ‰ๅ…ณๅŒน้…็ป“ๆžœ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง RegExp.prototype.exec() ๅ’Œ String.prototype.match() ้กตใ€‚

่ฟญไปฃๆ–นๆณ•ไธญ็š„ๆ”นๅ˜ๅˆๅง‹ๆ•ฐ็ป„

่ฟญไปฃๆ–นๆณ•ไธไผšๆ”นๅ˜่ฐƒ็”จๅฎƒ็š„ๆ•ฐ็ป„๏ผŒไฝ†ไฝœไธบ callbackFn ๆไพ›็š„ๅ‡ฝๆ•ฐๅฏไปฅใ€‚่ฆ่ฎฐไฝๅ…ณ้”ฎๅŽŸๅˆ™ๆ˜ฏๅชๆœ‰ 0 ๅ’Œ arrayLength - 1 ไน‹้—ด็š„็ดขๅผ•ๅฏ่ฎฟ้—ฎ๏ผŒarrayLength ๆ˜ฏๆ•ฐ็ป„ๆ–นๆณ•็ฌฌไธ€ๆฌก่ขซ่ฐƒ็”จๆ—ถ็š„้•ฟๅบฆๅ€ผ๏ผŒไฝ†ไผ ้€’็ป™ๅ›ž่ฐƒ็š„ๅ…ƒ็ด ๆ˜ฏ่ฎฟ้—ฎ็ดขๅผ•ๆ—ถ็š„ๅ€ผใ€‚ๅ› ๆญค๏ผš

  • callbackFn ไธไผš่ฎฟ้—ฎไปปไฝ•ๆทปๅŠ ๅˆฐ่ถ…ๅ‡บๆ•ฐ็ป„็š„ๅˆๅง‹ๅŒ–้•ฟๅบฆไน‹ๅค–็š„ๅ…ƒ็ด ๏ผŒๅฝ“ๅผ€ๅง‹่ฐƒ็”จ่ฟญไปฃๆ–นๆณ•ๆ—ถใ€‚
  • ๅฏนๅทฒ่ฎฟ้—ฎ็ดขๅผ•็š„ๅ˜ๆ›ดไธไผšๅฏผ่‡ดๅ†ๆฌกๅฏนๅ…ถ่ฐƒ็”จ callbackFnใ€‚
  • ๅฆ‚ๆžœๆ•ฐ็ป„ไธญๅญ˜ๅœจไฝ†ๆœช่ฎฟ้—ฎ็š„ๅ…ƒ็ด ่ขซ callbackFn ๆ›ดๆ”น๏ผŒๅˆ™ไผ ้€’็ป™ callbackFn ็š„ๅ€ผๅฐ†ๆ˜ฏ่ฎฟ้—ฎ่ฏฅๅ…ƒ็ด ๆ—ถ็š„ๅ€ผใ€‚ๅˆ ้™ค็š„ๅ…ƒ็ด ไธไผš่ขซ่ฎฟ้—ฎใ€‚

่ญฆๅ‘Š๏ผš ไธŠ่ฟฐ็ฑปๅž‹็š„ๅนถๅ‘ไฟฎๆ”น้€šๅธธไผšๅฏผ่‡ดไปฃ็ ้šพไปฅ็†่งฃ๏ผŒ้œ€่ฆ้ฟๅ…๏ผˆ็‰นๆฎŠๆƒ…ๅ†ต้™คๅค–๏ผ‰ใ€‚

ไธ‹้ข็š„็คบไพ‹ไฝฟ็”จ forEach ๆ–นๆณ•ไฝœไธบไธ€ไธชไพ‹ๅญ๏ผŒไฝ†ไปฅๅ‡ๅบ่ฎฟ้—ฎ็ดขๅผ•็š„ๅ…ถไป–็š„ๆ–นๆณ•ไปฅ็›ธๅŒ็š„ๆ–นๅผๅทฅไฝœใ€‚ๆˆ‘ไปฌๅฐ†ๅ…ˆๅฎšไน‰ไธ€ไธชๅธฎๅŠฉๅ‡ฝๆ•ฐ๏ผš

js
function testSideEffect(effect) {
  const arr = ["e1", "e2", "e3", "e4"];
  arr.forEach((elem, index, arr) => {
    console.log(`ๆ•ฐ็ป„๏ผš[${arr.join(", ")}]๏ผŒ็ดขๅผ•๏ผš${index}๏ผŒๅ…ƒ็ด ๏ผš${elem}`);
    effect(arr, index);
  });
  console.log(`ๆœ€็ปˆๆ•ฐ็ป„๏ผš[${arr.join(", ")}]`);
}

ไธ€ๆ—ฆ่พพๅˆฐ็ดขๅผ•๏ผŒๅฏนๅฐšๆœช่ฎฟ้—ฎ็ดขๅผ•็š„ไฟฎๆ”นๅฐ†ๅฏ่ง๏ผš

js
testSideEffect((arr, index) => {
  if (index + 1 < arr.length) arr[index + 1] += "*";
});
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e1, e2*, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše2*
// ๆ•ฐ็ป„๏ผš[e1, e2*, e3*, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผše3*
// ๆ•ฐ็ป„๏ผš[e1, e2*, e3*, e4*]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผše4*
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[e1, e2*, e3*, e4*]

ๅฏนๅทฒ่ฎฟ้—ฎ็ดขๅผ•็š„ไฟฎๆ”นไธไผšๆ”นๅ˜่ฟญไปฃ่กŒไธบ๏ผŒๅฐฝ็ฎกไน‹ๅŽๆ•ฐๆฎไผšๆœ‰ๆ‰€ไธๅŒ๏ผš

js
testSideEffect((arr, index) => {
  if (index > 0) arr[index - 1] += "*";
});
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše2
// ๆ•ฐ็ป„๏ผš[e1*, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผše3
// ๆ•ฐ็ป„๏ผš[e1*, e2*, e3, e4]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผše4
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[e1*, e2*, e3*, e4]

ๅœจๅฐไบŽๅˆๅง‹ๆ•ฐ็ป„้•ฟๅบฆ็š„ๆœช่ฎฟ้—ฎ็ดขๅผ•ๅค„ๆ’ๅ…ฅ n ๅ…ƒ็ด ๅฐ†ไฝฟๅฎƒไปฌ่ขซ่ฎฟ้—ฎใ€‚ๅŽŸๅง‹ๆ•ฐ็ป„ไธญๅคงไบŽๅˆๅง‹้•ฟๅบฆ็š„ๆœ€ๅŽ n ๅ…ƒ็ด ๅฐ†ไธไผš่ขซ่ฎฟ้—ฎ๏ผš

js
testSideEffect((arr, index) => {
  if (index === 1) arr.splice(2, 0, "new");
});
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše2
// ๆ•ฐ็ป„๏ผš[e1, e2, new, e3, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผšnew
// ๆ•ฐ็ป„๏ผš[e1, e2, new, e3, e4]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผše3
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[e1, e2, new, e3, e4]
// e4 ไธไผš่ขซ่ฎฟ้—ฎๅ› ไธบๅฎƒ็š„็ดขๅผ•ๆ˜ฏ 4

ๅœจๅคงไบŽๅˆๅง‹ๆ•ฐ็ป„้•ฟๅบฆๅค„ๆ’ๅ…ฅ n ๅ…ƒ็ด ๅฐ†ไธไผšไฝฟๅฎƒไปฌ่ขซ่ฎฟ้—ฎ๏ผš

js
testSideEffect((arr) => arr.push("new"));
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4, new]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše2
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4, new, new]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผše3
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4, new, new, new]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผše4
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[e1, e2, e3, e4, new, new, new, new]

ๅฏนๅทฒ็ป่ฎฟ้—ฎ่ฟ‡็š„็ดขๅผ•ๆ’ๅ…ฅ n ๅ…ƒ็ด ๅฐ†ไธไผšไฝฟๅฎƒไปฌ่ขซ่ฎฟ้—ฎ๏ผŒไฝ†ๅฎƒไผšๅฐ†ๅ‰ฉไฝ™ๅ…ƒ็ด ๅ‘ๅŽ็งปๅŠจ n๏ผŒๅ› ๆญคๅฝ“ๅ‰็ดขๅผ•ๅ’Œๅฎƒไน‹ๅ‰็š„ n - 1 ๅ…ƒ็ด ไผšๅ†ๆฌก่ขซ่ฎฟ้—ฎใ€‚

js
testSideEffect((arr, index) => arr.splice(index, 0, "new"));
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[new, e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[new, new, e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[new, new, new, e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผše1
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[new, new, new, new, e1, e2, e3, e4]
// e1 ไธๆ–ญ่ขซ่ฎฟ้—ฎ๏ผŒๅ› ไธบๅฎƒไธๆ–ญ่ขซ็งปๅ›ž

ๅˆ ้™คๆœช่ฎฟ้—ฎ็ดขๅผ•ๅค„็š„ n ๅ…ƒ็ด ๅฐ†ไฝฟๅฎƒไปฌไธๅ†่ขซ่ฎฟ้—ฎใ€‚ๅ› ไธบๆ•ฐ็ป„ๅทฒ็ป็ผฉๅฐ๏ผŒๆœ€ๅŽ n ่ฟญไปฃๅฐ†่ฎฟ้—ฎ่ถŠ็•Œ็ดขๅผ•ใ€‚ๅฆ‚ๆžœๆญคๆ–นๆณ•ๅฟฝ็•ฅไธๅญ˜ๅœจ็š„็ดขๅผ•๏ผˆๅ‚่งๆ•ฐ็ป„ๆ–นๆณ•ๅ’Œ็ฉบๆงฝ๏ผ‰๏ผŒๆœ€ๅŽ็š„ n ๆฌก่ฟญไปฃๅฐ†ไผš่ขซ่ทณ่ฟ‡๏ผ›ๅฆๅˆ™๏ผŒๅฎƒไปฌๅฐ†ๆ”ถๅˆฐ undefined๏ผš

js
testSideEffect((arr, index) => {
  if (index === 1) arr.splice(2, 1);
});
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše2
// ๆ•ฐ็ป„๏ผš[e1, e2, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผše4
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[e1, e2, e4]
// ไธไผš่ฎฟ้—ฎ็ดขๅผ• 3 ๅ› ไธบๅฎƒ่ถŠ็•Œ

// ไธŽ find() ๆฏ”่พƒ๏ผŒๅŽ่€…ๅฐ†ไธๅญ˜ๅœจ็š„็ดขๅผ•่ง†ไธบๆœชๅฎšไน‰๏ผš
const arr2 = ["e1", "e2", "e3", "e4"];
arr2.find((elem, index, arr) => {
  console.log(`ๆ•ฐ็ป„๏ผš[${arr.join(", ")}]๏ผŒ็ดขๅผ•๏ผš${index}๏ผŒๅ…ƒ็ด ๏ผš${elem}`);
  if (index === 1) arr.splice(2, 1);
  return false;
});
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše2
// ๆ•ฐ็ป„๏ผš[e1, e2, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผše4
// ๆ•ฐ็ป„๏ผš[e1, e2, e4]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผšundefined

ๅˆ ้™คๅทฒ่ฎฟ้—ฎ็ดขๅผ•ๅค„็š„ n ๅ…ƒ็ด ไธไผšๆ”นๅ˜ๅฎƒไปฌๅœจๅˆ ้™คไน‹ๅ‰่ขซ่ฎฟ้—ฎ็š„ไบ‹ๅฎžใ€‚ๅ› ไธบๆ•ฐๆฎๅทฒ็ป็ผฉๅฐ๏ผŒๅœจๅฝ“ๅ‰็ดขๅผ•ๅŽ็š„ไธ‹ n ๅ…ƒ็ด ่ขซ่ทณ่ฟ‡ใ€‚ๅฆ‚ๆžœๆญคๆ–นๆณ•ๅฟฝ็•ฅไธๅญ˜ๅœจ็ดขๅผ•๏ผŒๆœ€ๅŽ็š„ n ๆฌก่ฟญไปฃๅฐ†ไผš่ขซ่ทณ่ฟ‡๏ผ›ๅฆๅˆ™๏ผŒๅฎƒไปฌๅฐ†ๆ”ถๅˆฐ undefined๏ผš

js
testSideEffect((arr, index) => arr.splice(index, 1));
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ไธไผš่Œƒๅ›ดๅ†… e2 ๅ› ไธบ e2 ็Žฐๅœจ็š„็ดขๅผ•ๆ˜ฏ 0๏ผŒ็ดขๅผ• 0 ๅทฒ็ป่ขซ่ฎฟ้—ฎ่ฟ‡
// ๆ•ฐ็ป„๏ผš[e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše3
// ไธไผš่Œƒๅ›ดๅ†… e4 ๅ› ไธบ e4 ็Žฐๅœจ็š„็ดขๅผ•ๆ˜ฏ 1๏ผŒ็ดขๅผ• 1 ๅทฒ็ป่ขซ่ฎฟ้—ฎ่ฟ‡
// ๆœ€็ปˆๆ•ฐ็ป„๏ผš[e2, e4]
// ็ดขๅผ• 2 ่ถŠ็•Œ๏ผŒ็ดขๅผ•ๅฎƒไธไผš่ขซ่ฎฟ้—ฎ

// ไธŽ find() ๆฏ”่พƒ๏ผŒๅŽ่€…ๅฐ†ไธๅญ˜ๅœจ็š„็ดขๅผ•่ง†ไธบๆœชๅฎšไน‰๏ผš
const arr2 = ["e1", "e2", "e3", "e4"];
arr2.find((elem, index, arr) => {
  console.log(`ๆ•ฐ็ป„๏ผš[${arr.join(", ")}]๏ผŒ็ดขๅผ•๏ผš${index}๏ผŒๅ…ƒ็ด ๏ผš${elem}`);
  arr.splice(index, 1);
  return false;
});
// ๆ•ฐ็ป„๏ผš[e1, e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš0๏ผŒๅ…ƒ็ด ๏ผše1
// ๆ•ฐ็ป„๏ผš[e2, e3, e4]๏ผŒ็ดขๅผ•๏ผš1๏ผŒๅ…ƒ็ด ๏ผše3
// ๆ•ฐ็ป„๏ผš[e2, e4]๏ผŒ็ดขๅผ•๏ผš2๏ผŒๅ…ƒ็ด ๏ผšundefined
// ๆ•ฐ็ป„๏ผš[e2, e4]๏ผŒ็ดขๅผ•๏ผš3๏ผŒๅ…ƒ็ด ๏ผšundefined

ๅฏนไบŽๆŒ‰็ดขๅผ•้™ๅบ่ฟญไปฃ็š„ๆ–นๆณ•๏ผŒๆ’ๅ…ฅไผšๅฏผ่‡ดๅ…ƒ็ด ่ขซ่ทณ่ฟ‡๏ผŒๅˆ ้™คไผšๅฏผ่‡ดๅ…ƒ็ด ่ขซๅคšๆฌก่ฎฟ้—ฎ๏ผŒ่ฐƒๆ•ดไธŠ้ข็š„ไปฃ็ ไปฅๆŸฅ็œ‹ๆ•ˆๆžœใ€‚

่ง„่Œƒ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-array-objects

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

ๅ‚่ง