Baseline Widely available
Array
å®ä¾ç concat()
æ¹æ³ç¨äºå并两个æå¤ä¸ªæ°ç»ãæ¤æ¹æ³ä¸ä¼æ´æ¹ç°ææ°ç»ï¼èæ¯è¿åä¸ä¸ªæ°æ°ç»ã
const array1 = ["a", "b", "c"];
const array2 = ["d", "e", "f"];
const array3 = array1.concat(array2);
console.log(array3);
// Expected output: Array ["a", "b", "c", "d", "e", "f"]
è¯æ³
concat()
concat(value0)
concat(value0, value1)
concat(value0, value1, /* ⦠,*/ valueN)
åæ°
value1
ãâ¦â¦ãvalueN
å¯é
æ°ç»å/æå¼ï¼å°è¢«åå¹¶å°ä¸ä¸ªæ°çæ°ç»ä¸ã妿çç¥äºææ valueN
åæ°ï¼å concat
ä¼è¿åè°ç¨æ¤æ¹æ³çç°åæ°ç»çä¸ä¸ªæµ
æ·è´ã详æ
请åé
䏿æè¿°ã
æ°ç Array
å®ä¾ã
concat
æ¹æ³å建ä¸ä¸ªæ°æ°ç»ã该æ°ç»å°é¦å
ç±è°ç¨å®ç对象ä¸çå
ç´ å¡«å
ãç¶åï¼å¯¹äºæ¯ä¸ªåæ°ï¼å®çå¼å°è¢«è¿æ¥å°æ°ç»ä¸ââå¯¹äºæ®é对象æåºå
ï¼åæ°æ¬èº«å°æä¸ºæç»æ°ç»çä¸ä¸ªå
ç´ ï¼å¯¹äºå±æ§ Symbol.isConcatSpreadable
设置为ççæ°ç»æç±»æ°ç»å¯¹è±¡ï¼åæ°çæ¯ä¸ªå
ç´ é½å°æ¯ç¬ç«å°æ·»å å°æç»æ°ç»ä¸ãconcat
æ¹æ³ä¸ä¼éå½å°åµå¥æ°ç»åæ°ä¸ã
concat()
æ¹æ³æ¯ä¸ç§å¤å¶æ¹æ³ãå®ä¸ä¼æ´æ¹ this
æä½ä¸ºåæ°æä¾ç任使°ç»ï¼èæ¯è¿åå
å«ä¸åå§æ°ç»ä¸çå
ç´ ç¸åçå
ç´ çæµ
æ·è´ã
妿任使ºæ°ç»æ¯ç¨çæ°ç»ï¼concat()
æ¹æ³ä¼ä¿ç空槽ã
concat()
æ¹æ³æ¯éç¨çãthis
å¼çå¤çæ¹å¼ä¸å
¶ä»åæ°ç¸åï¼é¤äºå®ä¼å
转æ¢ä¸ºå¯¹è±¡ï¼ï¼è¿æå³çæ®é对象å°ç´æ¥æ·»å å°ç»ææ°ç»ä¸ï¼è [Symbol.isConcatSpreadable]
屿§ä¸ºçå¼çç±»æ°ç»å¯¹è±¡å°å±å¼å¹¶æ·»å å°æ°ç»ä¸ã
以ä¸ä»£ç å°ä¸¤ä¸ªæ°ç»å并为ä¸ä¸ªæ°æ°ç»ï¼
const letters = ["a", "b", "c"];
const numbers = [1, 2, 3];
const alphaNumeric = letters.concat(numbers);
console.log(alphaNumeric);
// è¾åº ['a', 'b', 'c', 1, 2, 3]
è¿æ¥ä¸ä¸ªæ°ç»
以ä¸ä»£ç å°ä¸ä¸ªæ°ç»å并为ä¸ä¸ªæ°æ°ç»ï¼
const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
const num3 = [7, 8, 9];
const numbers = num1.concat(num2, num3);
console.log(numbers);
// è¾åº [1, 2, 3, 4, 5, 6, 7, 8, 9]
å°å¼è¿æ¥å°æ°ç»
以ä¸ä»£ç å°ä¸ä¸ªå¼è¿æ¥å°æ°ç»ï¼
const letters = ["a", "b", "c"];
const alphaNumeric = letters.concat(1, [2, 3]);
console.log(alphaNumeric);
// è¾åº ['a', 'b', 'c', 1, 2, 3]
åå¹¶åµå¥æ°ç»
以ä¸ä»£ç åå¹¶æ°ç»å¹¶ä¿çå¼ç¨ï¼
const num1 = [[1]];
const num2 = [2, [3]];
const numbers = num1.concat(num2);
console.log(numbers);
// [[1], 2, [3]]
// ä¿®æ¹ num1 ç第ä¸ä¸ªå
ç´
num1[0].push(4);
console.log(numbers);
// [[1, 4], 2, [3]]
ä½¿ç¨ Symbol.isConcatSpreadable åå¹¶ç±»æ°ç»å¯¹è±¡
concat
é»è®¤æ
åµä¸ä¸ä¼å°ç±»æ°ç»å¯¹è±¡è§ä½æ°ç»ââä»
å¨ Symbol.isConcatSpreadable
被设置为çå¼ï¼ä¾å¦ï¼true
ï¼æ¶æä¼å°ç±»æ°ç»å¯¹è±¡è§ä½æ°ç»ã
const obj1 = { 0: 1, 1: 2, 2: 3, length: 3 };
const obj2 = { 0: 1, 1: 2, 2: 3, length: 3, [Symbol.isConcatSpreadable]: true };
console.log([0].concat(obj1, obj2));
// [ 0, { '0': 1, '1': 2, '2': 3, length: 3 }, 1, 2, 3 ]
å¨ç¨çæ°ç»ä¸ä½¿ç¨ concat()
妿任使ºæ°ç»æ¯ç¨ççï¼åç»ææ°ç»ä¹å°æ¯ç¨ççï¼
console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5]
console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]
å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ concat()
妿 this
å¼ä¸æ¯æ°ç»ï¼å®ä¼è¢«è½¬æ¢ä¸ºä¸ä¸ªå¯¹è±¡ï¼ç¶åä»¥ä¸ concat()
çåæ°ç¸åçæ¹å¼å¤çãå¨è¿ç§æ
åµä¸ï¼è¿åå¼å§ç»æ¯ä¸ä¸ªæ®éçæ°æ°ç»ã
console.log(Array.prototype.concat.call({}, 1, 2, 3)); // [{}, 1, 2, 3]
console.log(Array.prototype.concat.call(1, 2, 3)); // [ [Number: 1], 2, 3 ]
const arrayLike = {
[Symbol.isConcatSpreadable]: true,
length: 2,
0: 1,
1: 2,
2: 99, // ä¼è¢« concat() æå¿½ç¥ï¼å 为é¿åº¦ï¼lengthï¼ä¸º 2
};
console.log(Array.prototype.concat.call(arrayLike, 3, 4)); // [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