Baseline Widely available *
ä¸å
¶ä»ç¼ç¨è¯è¨ä¸çæ°ç»ä¸æ ·ï¼Array
å¯¹è±¡æ¯æå¨å个åéåä¸åå¨å¤ä¸ªå
ç´ ï¼å¹¶å
·ææ§è¡å¸¸è§æ°ç»æä½çæåã
å¨ JavaScript ä¸ï¼æ°ç»ä¸æ¯åå§ç±»åï¼èæ¯å
·æä»¥ä¸æ ¸å¿ç¹å¾ç Array
对象ï¼
0
å¤ï¼ç¬¬äºä¸ªå¨ç´¢å¼ 1
å¤ï¼ä»¥æ¤ç±»æ¨ï¼æåä¸ä¸ªå
ç´ æ¯æ°ç»ç length
屿§åå» 1
çå¼ãArray
对象ä¸è½ä½¿ç¨ä»»æå符串ä½ä¸ºå
ç´ ç´¢å¼ï¼å¦å
³èæ°ç»ï¼ï¼å¿
须使ç¨éè´æ´æ°ï¼æå®ä»¬çå符串形å¼ï¼ãéè¿éæ´æ°è®¾ç½®æè®¿é®ä¸ä¼è®¾ç½®æä»æ°ç»å表æ¬èº«æ£ç´¢å
ç´ ï¼ä½ä¼è®¾ç½®æè®¿é®ä¸è¯¥æ°ç»çå¯¹è±¡å±æ§éåç¸å
³çåéãæ°ç»çå¯¹è±¡å±æ§åæ°ç»å
ç´ å表æ¯åå¼çï¼æ°ç»çéååä¿®æ¹æä½ä¸è½åºç¨äºè¿äºå
·å屿§ã
æ°ç»å
ç´ æ¯å¯¹è±¡å±æ§ï¼å°±å toString
æ¯å±æ§ä¸æ ·ï¼å
·ä½æ¥è¯´ï¼toString()
æ¯ä¸ç§æ¹æ³ï¼ãç¶èï¼å°è¯æä»¥ä¸æ¹å¼è®¿é®æ°ç»çå
ç´ ä¼æåºè¯æ³é误ï¼å ä¸ºå±æ§åæ æï¼
JavaScript è¯æ³è¦æ±ä½¿ç¨æ¹æ¬å·è¡¨ç¤ºæ³è䏿¯ç¹å·è¡¨ç¤ºæ³æ¥è®¿é®ä»¥æ°åå¼å¤´ç屿§ãä¹å¯ä»¥ç¨å¼å·å
裹æ°ç»ç´¢å¼ï¼ä¾å¦ï¼years['2']
è䏿¯ years[2]
ï¼ï¼å°½ç®¡é常没æå¿
è¦ã
JavaScript 弿éè¿éå¼ç toString
ï¼å° years[2]
ä¸ç 2
强å¶è½¬æ¢ä¸ºå符串ãå æ¤ï¼'2'
å '02'
å°æå years
对象ä¸ç两个ä¸åçæ§½ä½ï¼ä¸é¢çä¾åå¯è½æ¯ true
ï¼
console.log(years["2"] !== years["02"]);
åªæ years['2']
æ¯ä¸ä¸ªå®é
çæ°ç»ç´¢å¼ãyears['02']
æ¯ä¸ä¸ªå¨æ°ç»è¿ä»£ä¸ä¸ä¼è¢«è®¿é®çä»»æåç¬¦ä¸²å±æ§ã
JavaScript æ°ç»ç length
屿§åæ°å¼å±æ§æ¯è¿æ¥çã
ä¸äºå
ç½®æ°ç»æ¹æ³ï¼ä¾å¦ join()
ãslice()
ãindexOf()
çï¼å¨è¢«è°ç¨æ¶ä¼èèå°æ°ç»ç length
屿§çå¼ã
å
¶ä»æ¹æ³ï¼ä¾å¦ï¼push()
ãsplice()
çï¼ä¹ä¼æ´æ°æ°ç»ç length
屿§ã
const fruits = [];
fruits.push("banana", "apple", "peach");
console.log(fruits.length); // 3
å½å¨ JavaScript æ°ç»ä¸è®¾ç½®ä¸ä¸ªå±æ§æ¶ï¼å¦æè¯¥å±æ§æ¯ä¸ä¸ªææçæ°ç»ç´¢å¼å¹¶ä¸è¯¥ç´¢å¼å¨æ°ç»çå½åè¾¹çä¹å¤ï¼å¼æå°ç¸åºå°æ´æ°æ°ç»ç length
屿§ï¼
fruits[5] = "mango";
console.log(fruits[5]); // 'mango'
console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
console.log(fruits.length); // 6
å¢å length
ä¼éè¿æ·»å ç©ºæ§½æ¥æ©å±æ°ç»ï¼è䏿¯åå»ºä»»ä½æ°å
ç´ ââçè³ä¸ä¼æ¯ undefined
ã
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
屿§ä¼å é¤å
ç´ ã
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
çï¼å¨è¿è¡å¤å¶æ¶ä¼ä¿ç空槽ï¼å æ¤æç»æ°ç»ä¾ç¶æ¯ç¨ççã
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()
ã
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()
ã
ä¸è¡¨ååºäºä¼ä¿®æ¹åå§æ°ç»çæ¹æ³ï¼ä»¥åç¸åºçéä¿®æ¹æ¹æ³ï¼
å°æ¹ååæ°ç»çæ¹æ³è½¬æ¢ä¸ºéä¿®æ¹æ¹æ³çä¸ç§ç®åæ¹å¼æ¯ä½¿ç¨å±å¼è¯æ³æ slice()
å
å建ä¸ä¸ªå¯æ¬ï¼
arr.copyWithin(0, 1, 2); // æ¹åäº arr
const arr2 = arr.slice().copyWithin(0, 1, 2); // 䏿¹å arr
const arr3 = [...arr].copyWithin(0, 1, 2); // 䏿¹å arr
è¿ä»£æ¹æ³
è®¸å¤æ°ç»æ¹æ³æ¥åä¸ä¸ªåè°å½æ°ä½ä¸ºåæ°ãåè°å½æ°æé¡ºåºä¸ºæ°ç»ä¸çæ¯ä¸ªå ç´ è°ç¨ï¼ä¸æå¤è°ç¨ä¸æ¬¡ï¼å¹¶ä¸åè°å½æ°çè¿åå¼ç¨äºç¡®å®æ¹æ³çè¿åå¼ãå®ä»¬é½å ·æç¸åçæ¹æ³ç¾åï¼
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
ï¼å¹¶ä¸å¯è½å¨ç´¢å¼ä¸å¤æ¬¡è°ç¨åè°å½æ°ã
è¿ä»£æ¹æ³è¿ä»£æ°ç»ï¼å¦ä¸æç¤ºï¼çç¥è®¸å¤ææ¯ç»èï¼ï¼
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 åä¸äºäºï¼ä¹è®¸æ´æ©å°è¿å
}
}
}
夿³¨å¦ä¸å 容ï¼
i in this
éªè¯ï¼find
ãfindIndex
ãfindLast
å findLastIndex
æ¹æ³ä¸æ§è¡ï¼å
¶ä»çä¼ãlength
åéå¨å¾ªç¯å¼å§ååå¨ãè¿ä¼å½±åè¿ä»£è¿ç¨ä¸æå
¥åå é¤çå¤çæ¹å¼ï¼åè§è¿ä»£æ¹æ³ä¸çæ¹ååå§æ°ç»ï¼ãmethod
æ¹æ³ä¸ä¼å卿°ç»å
容ï¼å æ¤å¦æè¿ä»£æé´ï¼æä»»ä½ç´¢å¼åçæ´æ¹ï¼å¯ä»¥è§å¯å°æ°çå¼ãfor (let i = length - 1; i >= 0; i--)
ï¼ï¼reduceRight()
ãfindLast()
å findLastIndex()
ãreduce
å reduceRight
å
·æç¥å¾®ä¸åçç¾åï¼å¹¶ä¸æ»æ¯ä»ç¬¬ä¸ä¸ª/æåä¸ä¸ªå
ç´ å¼å§ãæ°ç»æ¹æ³æ»æ¯éç¨çââå®ä»¬ä¸è®¿é®æ°ç»å¯¹è±¡çä»»ä½å
鍿°æ®ãå®ä»¬åªéè¿ length
屿§åç´¢å¼è®¿é®æ°ç»å
ç´ ãè¿æå³çå®ä»¬ä¹å¯ä»¥å¨ç±»æ°ç»å¯¹è±¡ä¸è°ç¨ã
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 æ¶ä¼æåºé误ï¼å æ¤é常ä¸ä¼è¾¾å°å®å
¨æ´æ°éå¼ï¼é¤éè¯¥æ¹æ³å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ã
Array.prototype.flat.call({}); // []
ä¸äºæ°ç»æ¹æ³ä¼è®¾ç½®æ°ç»å¯¹è±¡ç length
屿§ãå®ä»¬æ»æ¯å¨è§èåå设置å¼ï¼å æ¤ length
æ»æ¯ä»¥æ´æ°ç»å°¾ã
const a = { length: 0.7 };
Array.prototype.push.call(a);
console.log(a.length); // 0
ç±»æ°ç»å¯¹è±¡
æ¯è¯ç±»æ°ç»å¯¹è±¡æçæ¯å¨ä¸é¢æè¿°ç length
转æ¢è¿ç¨ä¸ä¸æåºçä»»ä½å¯¹è±¡ãå¨å®è·µä¸ï¼è¿æ ·ç对象åºè¯¥å®é
å
·æ length
屿§ï¼å¹¶ä¸ç´¢å¼å
ç´ çèå´å¨ 0
å° length - 1
ä¹é´ãï¼å¦æå®æ²¡æææçç´¢å¼ï¼å®å°å¨åè½ä¸çåäºç¨çæ°ç»ãï¼
è®¸å¤ DOM å¯¹è±¡é½æ¯ç±»æ°ç»å¯¹è±¡ââä¾å¦ NodeList
å HTMLCollection
ãarguments
å¯¹è±¡ä¹æ¯ç±»æ°ç»å¯¹è±¡ãä½ å¯ä»¥å¨å®ä»¬ä¸è°ç¨æ°ç»æ¹æ³ï¼å³ä½¿å®ä»¬æ¬èº«æ²¡æè¿äºæ¹æ³ã
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()
ä»å符串æå»ºæ°ç»ã
// ä½¿ç¨æ°ç»åé¢éå建ç '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
æ°ç»ä¸å建ä¸ä¸ªå符串ã
const fruits = ["Apple", "Banana"];
const fruitsString = fruits.join(", ");
console.log(fruitsString);
// "Apple, Banana"
éè¿ç´¢å¼è®¿é®æ°ç»å
ç´
ä¸é¢çä¾åå±ç¤ºäºå¦ä½éè¿æå®å®ä»¬å¨æ°ç»ä¸çä½ç½®çç´¢å¼å·æ¥è®¿é® fruits
æ°ç»ä¸çå
ç´ ã
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
æ°ç»ä¸çä½ç½®ï¼ç´¢å¼ï¼ã
const fruits = ["Apple", "Banana"];
console.log(fruits.indexOf("Banana"));
// 1
æ£æ¥æ°ç»æ¯å¦å
å«æä¸ªå
ç´
ä¸é¢çä¾åå±ç¤ºäºä¸¤ç§æ£æ¥ fruits
æ°ç»æ¯å¦å
å« "Banana"
å "Cherry"
çæ¹æ³ï¼é¦å
ä½¿ç¨ includes()
æ¹æ³ï¼ç¶åä½¿ç¨ indexOf()
æ¹æ³æ¥æµè¯ç´¢å¼å¼ä¸æ¯ -1
ã
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
æ°ç»è¿½å ä¸ä¸ªæ°å符串ã
const fruits = ["Apple", "Banana"];
const newLength = fruits.push("Orange");
console.log(fruits);
// ["Apple", "Banana", "Orange"]
console.log(newLength);
// 3
ç§»é¤æ°ç»ä¸çæåä¸ä¸ªå
ç´
ä¸é¢çä¾åä½¿ç¨ pop()
æ¹æ³ä» fruits
æ°ç»ä¸ç§»é¤æåä¸ä¸ªå
ç´ ã
const fruits = ["Apple", "Banana", "Orange"];
const removedItem = fruits.pop();
console.log(fruits);
// ["Apple", "Banana"]
console.log(removedItem);
// Orange
夿³¨ï¼ pop()
åªè½ç¨äºä»æ°ç»ä¸ç§»é¤æåä¸ä¸ªå
ç´ ãè¥è¦ä»æ°ç»æ«å°¾ç§»é¤å¤ä¸ªå
ç´ ï¼è¯·åè§ä¸ä¸ä¸ªç¤ºä¾ã
ä¸é¢çä¾åä½¿ç¨ splice()
æ¹æ³ä» fruits
æ°ç»ä¸ç§»é¤æå 3 个å
ç´ ã
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 个å
ç´ ã
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
æ°ç»ä¸ç§»é¤ç¬¬ä¸ä¸ªå
ç´ ã
const fruits = ["Apple", "Banana"];
const removedItem = fruits.shift();
console.log(fruits);
// ["Banana"]
console.log(removedItem);
// Apple
夿³¨ï¼ shift()
åªè½ç¨äºä»æ°ç»ä¸ç§»é¤ç¬¬ä¸ä¸ªå
ç´ ãè¥è¦ä»æ°ç»çå¼å¤´ç§»é¤å¤ä¸ªå
ç´ ï¼è¯·åè§ä¸ä¸ä¸ªç¤ºä¾ã
ä¸é¢çä¾åä½¿ç¨ splice()
æ¹æ³ä» fruits
æ°ç»ä¸ç§»é¤å 3 个å
ç´ ã
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
æ°ç»ä¸æ·»å ä¸ä¸ªæ°å
ç´ ââ使å
¶æä¸ºæ°ç»ä¸æ°ç第ä¸å
ç´ ã
const fruits = ["Banana", "Mango"];
const newLength = fruits.unshift("Strawberry");
console.log(fruits);
// ["Strawberry", "Banana", "Mango"]
console.log(newLength);
// 3
æç´¢å¼ç§»é¤å个å
ç´
ä¸é¢çä¾åä½¿ç¨ splice()
æ¹æ³ä» fruits
æ°ç»ä¸å é¤å符串 "Banana"
ââéè¿æå® "Banana"
çç´¢å¼ä½ç½®ã
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"
çç´¢å¼ä½ç½®ï¼ä»¥åè¦ç§»é¤çå
ç´ æ»æ°ã
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
æ°ç»ä¸çæå两个å
ç´ æ¿æ¢ä¸ºæ°å
ç´ ã
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
æ°ç»ï¼å°æ¯ä¸ä¸ªå
ç´ æå°å°æ§å¶å°ã
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
æ°ç»ä¸çæ¯ä¸ªå
ç´ ä¸è°ç¨ä¸ä¸ªå½æ°ï¼è¯¥å½æ°å°æ¯ä¸ªå
ç´ ä»¥åå
ç´ çç´¢å¼å·æå°å°æ§å¶å°ã
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
ä¿æä¸åã
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()
æ¹æ³ã
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()
å°å符串转æ¢åä¸ä¸ªå®å
¨ç¬ç«äºåæ°ç»çæ°æ°ç»ã
const fruitsDeepCopy = JSON.parse(JSON.stringify(fruits));
ä½ è¿å¯ä»¥ä½¿ç¨ structuredClone()
æ¹æ³å建深æ·è´ï¼è¯¥æ¹æ³çä¼ç¹æ¯å
许æºä»£ç ä¸çå¯è½¬ç§»å¯¹è±¡è¢«è½¬ç§»å°æ°ç坿¬ï¼èä¸ä»
ä»
æ¯å
éã
æåï¼éè¦çæ¯è¦çè§£ï¼å°ç°ææ°ç»èµå¼ç»æ°åéå¹¶ä¸ä¼å建æ°ç»æå ¶å ç´ ç坿¬ãç¸åï¼æ°åéåªæ¯å¯¹åæ°ç»çå¼ç¨æå«åï¼ä¹å°±æ¯è¯´ï¼åæ¥çæ°ç»ååæ°çåéååªæ¯åä¸ä¸ªå¯¹è±¡ç两个åç§°ï¼å æ¤æ»æ¯è¢«è®¡ç®ä¸ºä¸¥æ ¼ç¸çï¼ãå æ¤ï¼å¦æä½ 坹忰ç»ç弿æ°åéçå¼åäºä»»ä½æ¹åï¼å¦ä¸ä¸ªä¹ä¼æ¹åï¼
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]
ä½ç½®åè¢«è®¾ç½®ä¸ºç©ºæ ¼ã
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ä½¿ç¨æ°ç»å°ä¸ç»å¼å¶æè¡¨æ ¼
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()
è¿åã
ä¾å¦ï¼
// å¹é
ä¸ä¸ª 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
æ¹æ³ä½ä¸ºä¸ä¸ªä¾åï¼ä½ä»¥ååºè®¿é®ç´¢å¼çå
¶ä»çæ¹æ³ä»¥ç¸åçæ¹å¼å·¥ä½ãæä»¬å°å
å®ä¹ä¸ä¸ªå¸®å©å½æ°ï¼
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(", ")}]`);
}
䏿¦è¾¾å°ç´¢å¼ï¼å¯¹å°æªè®¿é®ç´¢å¼çä¿®æ¹å°å¯è§ï¼
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*]
对已访é®ç´¢å¼çä¿®æ¹ä¸ä¼æ¹åè¿ä»£è¡ä¸ºï¼å°½ç®¡ä¹åæ°æ®ä¼ææä¸åï¼
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 å ç´ å°ä¸ä¼è¢«è®¿é®ï¼
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 å ç´ å°ä¸ä¼ä½¿å®ä»¬è¢«è®¿é®ï¼
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 å ç´ ä¼å次被访é®ã
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
ï¼
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
ï¼
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
å¯¹äºæç´¢å¼éåºè¿ä»£çæ¹æ³ï¼æå ¥ä¼å¯¼è´å ç´ è¢«è·³è¿ï¼å é¤ä¼å¯¼è´å ç´ è¢«å¤æ¬¡è®¿é®ï¼è°æ´ä¸é¢ç代ç 以æ¥çææã
è§è æµè§å¨å ¼å®¹æ§ åè§RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4