ItIron2021
Javascript
昨天我們開始了新的系列,剩下這幾天也會以這類型的題目進行!當時這些題目是在模擬面試活動的最後一周跑的,除了練習應用題之外,最主要的目的是讓參與的同學了解提問的重要性以及一些技巧,解題的部份反而變少,把重點放在兩方交流的過程中,希望不管是面對白板題或是面試時隨口拋出的問題也能有一套處理的邏輯,讓回答的過程可以更從容一些!
請寫一個duplicate函數,達成以下的輸出結果
console.log(duplicate([1, 2, 3, 4, 5]))
// 輸出結果
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
防雷防雷,聽說你傳說很雷
從昨天的教訓我們知道,首先你要先釐清問題,那我這邊就幫你省點麻煩吧!
了解這些候你就可以開始動手了,其實你應該也意識到這在考的是你要如何複製一個陣列,只要複製後再與原陣列相連接不就行了? 以下是幾種常見的做法
經典不敗老招,想不出該怎麼做用迴圈就對了。
function duplicate(arr) {
const result = [...arr]
for (let i = 0; i < arr.length; i++) {
result.push(arr[i])
}
return result
}
function duplicate(arr) {
return [...arr, ...arr]
}
最後就是原生的陣列連接的方法,配合apply來使用就更方便了!
function duplicate(arr) {
return [].concat.apply(arr, arr)
}
當然還有許多其他的方法,不過解決同一個問題我認為提個2~3招就差不多了,當你腦中已經有複數個思路時,建議不要直接將你認為的最佳解丟給對方(除非是筆試),而是先從基礎的作法開始回答,這樣當面試官問你還有沒有其他方法時你才不至於詞窮?
今天的題目就到這邊為止,是不是特別輕鬆簡單呢!
陣列淺拷貝、apply
本文章同步發布於個人部落格,有興趣的朋友也可以來逛逛~!