Baseline Widely available
Array
實é«ç copyWithin()
æ¹æ³æå°é£åä¸çé¨åå
ç´ é²è¡æ·ºè¤è£½ï¼ä¸¦å°å
¶æ¾ç½®æ¼é£åå
§çå¦ä¸åä½ç½®ï¼åæè¿å該é£åï¼ä½ä¸æ¹è®å
¶é·åº¦ã
const array1 = ["a", "b", "c", "d", "e"];
// å°ç´¢å¼ 3 çå
ç´ è¤è£½å°ç´¢å¼ 0
console.log(array1.copyWithin(0, 3, 4));
// é æè¼¸åºï¼Array ["d", "b", "c", "d", "e"]
// å°ç´¢å¼ 3 å°çµå°¾çææå
ç´ è¤è£½å°ç´¢å¼ 1
console.log(array1.copyWithin(1, 3));
// é æè¼¸åºï¼Array ["d", "d", "e", "d", "e"]
èªæ³
copyWithin(target, start)
copyWithin(target, start, end)
忏
target
è¦è¤è£½åºåè³ç以é¶çºåºåºçç´¢å¼ï¼æè½æçºæ´æ¸ãéå°æå° start
ä½ç½®çå
ç´ å°è¢«è¤è£½è³ target
ï¼è start
å end
ä¹éçææå
ç´ æä¾åºè¤è£½è³å¾çºç´¢å¼ã
-array.length <= target < 0
ï¼åä½¿ç¨ target + array.length
ãtarget < -array.length
ï¼åä½¿ç¨ 0
ãtarget >= array.length
ï¼å䏿è¤è£½ä»»ä½å
§å®¹ãtarget
卿£è¦åå¾ä½æ¼ start
ä¹å¾ï¼ååªæè¤è£½è³ array.length
çµå°¾ï¼æå¥è©±èªªï¼copyWithin()
䏿æ´å±é£åï¼ãstart
è¦éå§è¤è£½å ç´ ç以é¶çºåºåºçç´¢å¼ï¼æè½æçºæ´æ¸ã
-array.length <= start < 0
ï¼åä½¿ç¨ start + array.length
ãstart < -array.length
ï¼åä½¿ç¨ 0
ãstart >= array.length
ï¼å䏿è¤è£½ä»»ä½å
§å®¹ãend
鏿æ§
è¦çµæè¤è£½å
ç´ ç以é¶çºåºåºçç´¢å¼ï¼æè½æçºæ´æ¸ãcopyWithin()
æè¤è£½è³ end
ä¹åçå
ç´ ï¼ä½ä¸å
å« end
ã
-array.length <= end < 0
ï¼åä½¿ç¨ end + array.length
ãend < -array.length
ï¼åä½¿ç¨ 0
ãend >= array.length
æ end
æªæä¾æçº undefined
ï¼åä½¿ç¨ array.length
ï¼ä½¿å
¶è¤è£½è³çµå°¾ãend
æå°æçä½ç½®å¨ start
æå°æçä½ç½®ä¹åæç¸åï¼å䏿è¤è£½ä»»ä½å
§å®¹ã被修æ¹çé£åã
æè¿°copyWithin()
æ¹æ³é¡ä¼¼æ¼ C å C++ ç memmove
ï¼å®æ¯ä¸ç¨®é«æè½çæ¹æ³ï¼å¯ç¨ä¾ç§»å Array
çè³æãéå¨ TypedArray
æ¹æ³ä¸å°¤å
¶é©ç¨ãè©²æ¹æ³æå°é¸å®çåºå䏿¬¡æ§è¤è£½ä¸¦è²¼ä¸ï¼å³ä½¿è¤è£½ååèè²¼ä¸ååéçï¼è²¼ä¸çåºåä»ç¶æä¿çå·²è¤è£½çå¼ã
ç±æ¼ undefined
è½æçºæ´æ¸ææè®çº 0
ï¼å æ¤çç¥ start
åæ¸çææèå³å
¥ 0
ç¸åï¼éæå°è´æ´åé£å被è¤è£½å°ç®æ¨ä½ç½®ï¼ç¸ç¶æ¼åå³ä½ç§»ï¼ä¸¦è£åªå³éçãéè¤å·¦éçãæ¤è¡çºå¯è½æè®ä½ çç¨å¼ç¢¼è®è
æå°å°æï¼å æ¤å»ºè°é¡¯å¼å³å
¥ 0
ä½çº start
ã
console.log([1, 2, 3, 4, 5].copyWithin(2));
// [1, 2, 1, 2, 3]ï¼å°ææå
ç´ åå³ç§»å 2 åä½ç½®
copyWithin()
æ¹æ³æ¯ä¸åå¯è®ç°æ¹æ³ãå®ä¸ææ¹è® this
çé·åº¦ï¼ä½ææ¹è® this
çå
§å®¹ï¼ä¸¦å¨å¿
è¦ææ°å¢æåªé¤å±¬æ§ã
copyWithin()
æ¹æ³æä¿ç空槽ãå¦æè¢«è¤è£½çå忝ç¨çé£åï¼åç©ºæ§½å°æçæ°ç´¢å¼æè¢«åªé¤ï¼ä¸¦ä»ç¶çºç©ºæ§½ã
copyWithin()
æ¹æ³æ¯éç¨çãå®åªè¦æ± this
å
·æ length
屬æ§åæ´æ¸éµå±¬æ§ãéç¶å串ä¹é¡ä¼¼é£åï¼ä½æ¤æ¹æ³ä¸é©ç¨æ¼å串ï¼å çºå串æ¯ä¸å¯è®çã
console.log([1, 2, 3, 4, 5].copyWithin(0, 3));
// [4, 5, 3, 4, 5]
console.log([1, 2, 3, 4, 5].copyWithin(0, 3, 4));
// [4, 2, 3, 4, 5]
console.log([1, 2, 3, 4, 5].copyWithin(-2, -3, -1));
// [1, 2, 3, 3, 4]
å¨ç¨çé£åä¸ä½¿ç¨ copyWithin()
copyWithin()
æå³æç©ºæ§½ã
console.log([1, , 3].copyWithin(2, 1, 2)); // [1, empty, empty]
å¨éé£åç©ä»¶ä¸èª¿ç¨ copyWithin()
copyWithin()
æ¹æ³æè®å this
ç length
屬æ§ï¼ä¸¦æä½å
¶ä¸çæ´æ¸ç´¢å¼ã
const arrayLike = {
length: 5,
3: 1,
};
console.log(Array.prototype.copyWithin.call(arrayLike, 0, 3));
// { '0': 1, '3': 1, length: 5 }
console.log(Array.prototype.copyWithin.call(arrayLike, 3, 1));
// { '0': 1, length: 5 }
// 屬æ§ã3ã被åªé¤ï¼å çºè¤è£½ä¾æºæ¯ç©ºæ§½
è¦ç¯ ç覽å¨ç¸å®¹æ§ åè¦
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