2017-04-07 1 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 동일한 배열을 가지기 위해 새끼 변수의 데이터를 로컬 새끼 인스턴스로 푸시합니다.

3- 매개 변수에 전달 된 이름을 새 배열에 넣습니다.

4 push()를 수행 한 새 배열을 반환하고 전역 새끼 고양이는 그대로 둡니다.

내 사고 과정이 중단 되었습니까? 내가 떠난 곳으로 어떤 아이디어가 있니? 도와주는 모든 사람들. 고마워, 정말 고마워.

답변

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

고맙습니다! 나는 당신이 그것을 쓴 방법을 연구해야합니다. 나는 또한 ES6를 포함하여 두 가지를 모두 이해할 수있게되어서 고맙게 생각합니다. 나는 내 사고에서 너무 벗어나지 않았다는 것을 알았 기 때문에 기쁘다. (stackoverflow가 기다리라고 말하면서 7 분 안에 답을 수락합니다.) –

관련 문제