String.prototype.concat()
String.prototype.concat()
方法將一個(gè)或多個(gè)字符串與原字符串連接合并,形成一個(gè)新的字符串并返回景埃。
const a = [1, 2, 3]
const b = [4, 5, 6]
const merged = [].concat(a, b) // [1, 2, 3, 4, 5, 6]
// 或
const alsoMerged = a.concat(b) // [1, 2, 3, 4, 5, 6]
這兩種方法都會(huì)產(chǎn)生新的數(shù)組跪帝,而不會(huì)改變?cè)瓟?shù)組。
擴(kuò)展運(yùn)算符
const a = [1, 2, 3]
const b = [4, 5, 6]
const merged = [...a, ...b] // [1, 2, 3, 4, 5, 6]
兩者的比較
String.prototype.concat()
可以比展開運(yùn)算符更好地處理非數(shù)組值崎苗,這可能是在合并不確定是否為數(shù)組的值時(shí)需要考慮的問(wèn)題:
const a = [1, 2, 3]
const b = true
const c = 'Hello'
const mergeAb = [...a, ...b] // Error:b 不可迭代
const mergeAc = [...a, ...c] // [1, 2, 3, 'h', 'i'] 錯(cuò)誤的結(jié)果
// 你應(yīng)該改用 [...a, b] 和 [...a, c]
const concatAb = [].concat(a, b) // [1, 2, 3, true]
const concatAb = [].concat(a, c) // [1, 2, 3, 'Hello']
如上面所看到的狐粱,當(dāng)傳遞不可迭代對(duì)象時(shí),展開運(yùn)算符要么拋出錯(cuò)誤胆数,要么不輸出正確的結(jié)果肌蜻。而 String.prototype.concat
則不會(huì)出現(xiàn)這樣的問(wèn)題。
該如何選擇必尼?
只要知道輸入是數(shù)組蒋搜,就使用展開運(yùn)算符(...
),因?yàn)樗男阅芨门欣颍乙子陂喿x和理解豆挽。
當(dāng)您對(duì)一個(gè)或多個(gè)輸入不確定且不想添加額外的檢查時(shí),請(qǐng)使用 String.prototype.concat()
券盅,因?yàn)樗梢愿鼉?yōu)雅地處理這些情況帮哈。