首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拼接改变我的初始数组

拼接改变我的初始数组
EN

Stack Overflow用户
提问于 2017-04-12 00:26:20
回答 3查看 111关注 0票数 0

我希望删除数组的前两个元素,并在稍后的代码中同时使用新的数组和模型。我的问题是splice()甚至改变了我代码中的arrayModel。

以下是我的代码

代码语言:javascript
复制
var arrayModel = ['a','b','c','d']

function dontAlterMyModel (arrayModel) {
  arrayTemp = arrayModel
  arrayTemp.splice(0, 2)
  console.log("arrayModel", arrayModel)
  console.log("arrayTemp", arrayTemp)
  return
}

dontAlterMyModel(arrayModel)

结果如下:

代码语言:javascript
复制
arrayModel [ 'c', 'd' ]
arrayTemp [ 'c', 'd' ]

鉴于我想要:

代码语言:javascript
复制
arrayModel [ 'a', 'b', 'c', 'd' ]
arrayTemp [ 'c', 'd' ]

我试着用其他方法。

使用shift()两次也会改变模型

arrayTemp = array.slice(2)给了我与我想要的相反的东西:[ 'a', 'b']

我应该如何继续?谢谢你的帮忙!

EN

回答 3

Stack Overflow用户

发布于 2017-04-12 00:29:06

Array#splice会改变原始数组。我建议您使用Array#slice并将新数组存储在新变量中。

代码语言:javascript
复制
var arrayModel = ['a','b','c','d']

function dontAlterMyModel (arrayModel) {
  arrayTemp = arrayModel;
  var newArr = arrayTemp.slice(-2);
  console.log("arrayModel", arrayModel);
  console.log("arrayTemp", newArr);
}

dontAlterMyModel(arrayModel)

票数 1
EN

Stack Overflow用户

发布于 2017-04-12 00:29:47

使用对象分配复制原始数组

代码语言:javascript
复制
  arrayTemp = Object.assign([], arrayModel).splice(0,2)
票数 0
EN

Stack Overflow用户

发布于 2017-04-12 00:30:15

您可以在slice中使用负数

代码语言:javascript
复制
var a = ['a', 'b', 'c', 'd'];
var b = a.slice(-2);

console.log(a, b);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43351451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档