将变量附加到数组而不更改它

时间:2017-04-07 16:36:26

标签: javascript arrays

我目前正在开设一个训练前课程,并且无法在线寻求帮助以解决让我有点困惑的问题。

我理解当我们使用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变量推送到本地小猫实例,以便拥有相同的数组。

3-我们将参数中传递的任何名称推送到新数组中。

4-返回执行了push()的新数组,使全局小猫不受影响。

我的思维过程是否关闭?任何关于我离开的地方的想法?所有帮助的人。谢谢,真的很感激。

1 个答案:

答案 0 :(得分:3)

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