2017-04-07 50 views
1

我目前正在進行預訓練課程,並且無法在線尋找幫助以解決讓我有點困惑的問題。將變量追加到數組而不更改

我明白當我們使用JavaScript時,我們可以使用push(),pop(),shift()和unshift()方法來添加/刪除數組。我遇到的問題是測試問題:

1) Arrays appendKitten(name) appends a kitten to the kittens array and returns a new array, 
    leaving the kittens array unchanged: 

我在解決這個問題上困惑了近一天。當我們想要更改數組時,我們會使用其中一種方法。例如,當我們追加它將是:

var kittens = ["Milo", "Otis", "Garfield"] 

function destructivelyAppendKitten(name){ 
kittens.push(name) 
return kittens 
} 

這將推入一個新的小貓(姓名)到數組中。現在爲了解決我以前寫的測試:

function appendKitten(name){ 
var newArray = [] 
var kittens = kittens.concat(newArray); 
kittens.push(name) 
return kittens 
} 

但是仍然收到相同的錯誤。有什麼我失蹤?在解決這個問題

我的思維過程:

1 - 我們正在調用一個函數的名字與一個參數appendKittens - >名稱。

2-我們正在將數據從kitten變量推入本地kitten實例,以便擁有相同的數組。

3-我們將參數中的任何名字傳遞到新的數組中。

4-返回已執行push()的新數組,而不改變全局小貓。

我的思維過程是否關閉?任何想法我到哪裏?所有幫助的人。謝謝,真的很感激它。

回答

3
function appendKitten(name){ 
    var newArray = kittens.slice(); 
    // or ES6 way 
    // var newArray = [...kittens]; 
    newArray.push(name) 
    return newArray 
} 
+0

謝謝!我需要研究你寫它的方式。我也非常感謝你們將ES6包括在內,讓我理解這兩點。很高興看到我在思考中沒有太過失落。 (我會在7分鐘內接受你的回答,因爲stackoverflow讓我等待)。 –