Baseline Widely available
map()
æ¹æ³å建ä¸ä¸ªæ°æ°ç»ï¼è¿ä¸ªæ°æ°ç»ç±åæ°ç»ä¸çæ¯ä¸ªå
ç´ é½è°ç¨ä¸æ¬¡æä¾ç彿°åçè¿åå¼ç»æã
const array1 = [1, 4, 9, 16];
// Pass a function to map
const map1 = array1.map((x) => x * 2);
console.log(map1);
// Expected output: Array [2, 8, 18, 32]
è¯æ³
map(callbackFn)
map(callbackFn, thisArg)
åæ°
callbackFn
为æ°ç»ä¸çæ¯ä¸ªå ç´ æ§è¡ç彿°ãå®çè¿åå¼ä½ä¸ºä¸ä¸ªå ç´ è¢«æ·»å ä¸ºæ°æ°ç»ä¸ãè¯¥å½æ°è¢«è°ç¨æ¶å°ä¼ å ¥ä»¥ä¸åæ°ï¼
element
æ°ç»ä¸å½åæ£å¨å¤ççå ç´ ã
index
æ£å¨å¤ççå ç´ å¨æ°ç»ä¸çç´¢å¼ã
array
è°ç¨äº map()
çæ°ç»æ¬èº«ã
thisArg
å¯é
æ§è¡ callbackFn
æ¶ç¨ä½ this
çå¼ãåè§è¿ä»£æ¹æ³ã
ä¸ä¸ªæ°æ°ç»ï¼æ¯ä¸ªå ç´ é½æ¯åè°å½æ°çè¿åå¼ã
æè¿°map()
æ¹æ³æ¯ä¸ä¸ªè¿ä»£æ¹æ³ãå®ä¸ºæ°ç»ä¸çæ¯ä¸ªå
ç´ è°ç¨ä¸æ¬¡æä¾ç callbackFn
彿°ï¼å¹¶ç¨ç»ææå»ºä¸ä¸ªæ°æ°ç»ã
callbackFn
ä»
å¨å·²åé
å¼çæ°ç»ç´¢å¼å¤è¢«è°ç¨ãå®ä¸ä¼å¨ç¨çæ°ç»ä¸ç空槽å¤è¢«è°ç¨ã
map()
æ¹æ³æ¯ä¸ä¸ªå¤å¶æ¹æ³ãå®ä¸ä¼æ¹å this
ãç¶èï¼ä½ä¸º callbackFn
æä¾ç彿°å¯ä»¥æ´æ¹æ°ç»ã请注æï¼å¨ç¬¬ä¸æ¬¡è°ç¨ callbackFn
ä¹åï¼æ°ç»çé¿åº¦å·²ç»è¢«ä¿åãå æ¤ï¼
map()
æ¶ï¼callbackFn
å°ä¸ä¼è®¿é®è¶
åºæ°ç»åå§é¿åº¦çä»»ä½å
ç´ ãcallbackFn
ãcallbackFn
æ´æ¹ï¼åå®ä¼ éç» callbackFn
çå¼å°æ¯è¯¥å
ç´ è¢«ä¿®æ¹åçå¼ã被å é¤çå
ç´ åä¸ä¼è¢«è®¿é®ãè¦åï¼ ä¸è¿°ç±»åçå¹¶åä¿®æ¹ç»å¸¸å¯¼è´é¾ä»¥çè§£ç代ç ï¼é常åºé¿å ï¼ç¹æ®æ åµé¤å¤ï¼ã
map()
æ¹æ³æ¯éç¨çãå®åªææ this
å¼å
·æ length
屿§åæ´æ°é®å±æ§ã
ç±äº map
å建ä¸ä¸ªæ°æ°ç»ï¼å¨æ²¡æä½¿ç¨è¿åçæ°ç»çæ
åµä¸è°ç¨å®æ¯ä¸æ°å½çï¼åºè¯¥ä½¿ç¨ forEach
æ for...of
ä½ä¸ºä»£æ¿ã
ä¸é¢ç代ç å建äºä¸ä¸ªæ°æ°ç»ï¼å¼ä¸ºåæ°ç»ä¸å¯¹åºæ°åçå¹³æ¹æ ¹ã
const numbers = [1, 4, 9];
const roots = numbers.map((num) => Math.sqrt(num));
// roots ç°å¨æ¯ [1, 2, 3]
// numbers 便§æ¯ [1, 4, 9]
ä½¿ç¨ map éæ°æ ¼å¼åæ°ç»ä¸ç对象
以ä¸ä»£ç 使ç¨ä¸ä¸ªå å«å¯¹è±¡çæ°ç»æ¥éæ°å建ä¸ä¸ªæ ¼å¼ååçæ°ç»ã
const kvArray = [
{ key: 1, value: 10 },
{ key: 2, value: 20 },
{ key: 3, value: 30 },
];
const reformattedArray = kvArray.map(({ key, value }) => ({ [key]: value }));
console.log(reformattedArray); // [{ 1: 10 }, { 2: 20 }, { 3: 30 }]
console.log(kvArray);
// [
// { key: 1, value: 10 },
// { key: 2, value: 20 },
// { key: 3, value: 30 }
// ]
使ç¨å
å«åä¸ªåæ°ç彿°æ¥æ å°ä¸ä¸ªæ°åæ°ç»
ä¸é¢ç代ç 表示äºå½å½æ°éè¦ä¸ä¸ªåæ°æ¶ map
ç工使¹å¼ãå½ map
循ç¯éååå§æ°ç»æ¶ï¼è¿ä¸ªåæ°ä¼èªå¨è¢«åé
ææ°ç»ä¸å¯¹åºçæ¯ä¸ªå
ç´ ã
const numbers = [1, 4, 9];
const doubles = numbers.map((num) => num * 2);
console.log(doubles); // [2, 8, 18]
console.log(numbers); // [1, 4, 9]
å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ map()
map()
æ¹æ³è¯»å this
ç length
屿§ï¼ç¶åè®¿é®æ¯ä¸ªæ´æ°ç´¢å¼ã
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
};
console.log(Array.prototype.map.call(arrayLike, (x) => x ** 2));
// [ 4, 9, 16 ]
å¨ NodeList ä¸éç¨å°ä½¿ç¨ map()
以ä¸ç¤ºä¾å±ç¤ºäºå¦ä½å»éåéè¿ querySelectorAll
å¾å°ç对象éåãè¿æ¯å 为 querySelectorAll
è¿åçæ¯ä¸ä¸ªå¯¹è±¡éå NodeList
ã
å¨è¿ç§æ
åµä¸ï¼æä»¬è¿åå±å¹ä¸ææéä¸ option
çå¼ï¼
const elems = document.querySelectorAll("select option:checked");
const values = Array.prototype.map.call(elems, ({ value }) => value);
ä¸ç§æ´ç®åçæ¹å¼æ¯ç¨ Array.from()
æ¹æ³ã
ç¨çæ°ç»å¨ä½¿ç¨ map()
æ¹æ³åä»ç¶æ¯ç¨ççã空槽çç´¢å¼å¨è¿åçæ°ç»ä¸ä»ç¶ä¸ºç©ºï¼å¹¶ä¸åè°å½æ°ä¸ä¼å¯¹å®ä»¬è¿è¡è°ç¨ã
console.log(
[1, , 3].map((x, index) => {
console.log(`Visit ${index}`);
return x * 2;
}),
);
// Visit 0
// Visit 2
// [2, empty, 6]
å° parseInt() ä¸ map() ä¸èµ·ä½¿ç¨
ï¼åå°è¿ç¯åæçå¯åï¼
é常æ åµä¸ï¼æä»¬ä½¿ç¨åªæä¸ä¸ªåæ°ï¼å³æ£å¨éåçå ç´ ï¼çåè°å½æ°ã尽管æäºå½æ°å¯ä»¥æ¥åé¢å¤çå¯éåæ°ï¼ä½å¨å®é åºç¨ä¸ï¼æä»¬é常åªä¼ éä¸ä¸ªåæ°ãè¿ç§ä¹ æ¯å¯è½ä¼å¯¼è´ä¸äºä»¤äººå°æçç°è±¡ã
èèä¸ä¾ï¼
["1", "2", "3"].map(parseInt);
æä»¬ææè¾åº [1, 2, 3]
, èå®é
ç»ææ¯ [1, NaN, NaN]
.
parseInt
彿°é常åªä½¿ç¨ä¸ä¸ªåæ°ï¼ä½å
¶å®å¯ä»¥ä¼ å
¥ä¸¤ä¸ªåæ°ã第ä¸ä¸ªåæ°æ¯è¡¨è¾¾å¼ï¼ç¬¬äºä¸ªåæ°æ¯è§£æè¯¥è¡¨è¾¾å¼çåºæ°ãå½å¨ Array.prototype.map
çåè°å½æ°ä¸ä½¿ç¨ parseInt
彿°æ¶ï¼map
æ¹æ³ä¼ä¼ é 3 ä¸ªåæ°ï¼
parseInt
彿°ä¼å¿½ç¥ç¬¬ä¸ä¸ªåæ°ï¼ä½æ¯ä¸ä¼å¿½ç¥ç¬¬äºä¸ªåæ°ï¼è¿å¯è½ä¼å¯¼è´ä¸äºé®é¢ã
以䏿¯è¿ä»£æ¥éª¤çç®æç¤ºä¾ï¼
// parseInt(string, radix) -> map(parseInt(value, index))
/* ç¬¬ä¸æ¬¡è¿ä»£ (index æ¯ 0): */ parseInt("1", 0); // 1
/* ç¬¬äºæ¬¡è¿ä»£ (index æ¯ 1): */ parseInt("2", 1); // NaN
/* ç¬¬ä¸æ¬¡è¿ä»£ (index æ¯ 2): */ parseInt("3", 2); // NaN
ä¸é¢è®©æä»¬æ¥è®¨è®ºè§£å³æ¹æ¡ï¼
const returnInt = (element) => parseInt(element, 10);
["1", "2", "3"].map(returnInt); // [1, 2, 3]
// å®é
ç»ææ¯ä¸ä¸ªæ°åæ°ç»ï¼å¦é¢æï¼
// ä¸ä¸é¢ç¸åï¼ä½ä½¿ç¨ç®æ´çç®å¤´å½æ°è¯æ³
["1", "2", "3"].map((str) => parseInt(str)); // [1, 2, 3]
// å®ç°ä¸è¿°ç®æ æ´ç®åçæ¹æ³ï¼åæ¶é¿å
äºâéªæâï¼
["1", "2", "3"].map(Number); // [1, 2, 3]
// ä½ä¸ parseInt() ä¸åï¼Number() è¿ä¼è¿åä¸ä¸ªæµ®ç¹æ°æï¼è§£æï¼ææ°è¡¨ç¤ºæ³ï¼
["1.1", "2.2e2", "3e300"].map(Number); // [1.1, 220, 3e+300]
// 为äºè¿è¡æ¯è¾ï¼å¦ææä»¬å¯¹ä¸é¢çæ°ç»ä½¿ç¨ parseInt():
["1.1", "2.2e2", "3e300"].map((str) => parseInt(str)); // [1, 2, 3]
ä½¿ç¨ parseInt
ä½ä¸ºåæ°è°ç¨ map æ¹æ³ï¼è¾åºè¿è¡å¦ä¸ï¼
const strings = ["10", "10", "10"];
const numbers = strings.map(parseInt);
console.log(numbers);
// æ ¹æ®ä»¥ä¸æè¿°ï¼[10, NaN, 2] çå®é
ç»æå¯è½ä¼åºä¹ææã
æ å°å
å« undefined çæ°ç»
å½è¿å undefined
ææ²¡æè¿åä»»ä½å
容æ¶ï¼
const numbers = [1, 2, 3, 4];
const filteredNumbers = numbers.map((num, index) => {
if (index < 3) {
return num;
}
});
// index ä» 0 å¼å§ï¼å æ¤ filterNumbers 为 1ã2ã3 å undefinedã
// filteredNumbers æ¯ [1, 2, 3, undefined]
// numbers 便§æ¯ [1, 2, 3, 4]
è§è æµè§å¨å
¼å®¹æ§ åè§
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