Javascript 将对象内容数组指定给新数组

Javascript 将对象内容数组指定给新数组,javascript,arrays,object,concat,Javascript,Arrays,Object,Concat,我试图将一个对象数组分配给另一个数组,但当我创建新数组和其他函数时,我更改了它的值,原始数组也会更改(这是不正确的)。我能用另一种方式吗? 这是一个示例:http://codepen.io/Xiwi/pen/rLMbYp看起来您需要复制/克隆阵列,这样它就不会被引用更改 如果阵列中只有一个,则可以执行以下操作: var test3 = JSON.parse(JSON.stringify(test2)); 否则,您需要一个递归解决方案,并在问题中更加具体 例如: var test1=[{nam

我试图将一个对象数组分配给另一个数组,但当我创建新数组和其他函数时,我更改了它的值,原始数组也会更改(这是不正确的)。我能用另一种方式吗?
这是一个示例:http://codepen.io/Xiwi/pen/rLMbYp

看起来您需要复制/克隆阵列,这样它就不会被引用更改

如果阵列中只有一个,则可以执行以下操作:

var test3 = JSON.parse(JSON.stringify(test2));
否则,您需要一个递归解决方案,并在问题中更加具体

例如:

var test1=[{name:'test1'}];
var test2=[{name:'test2'}];
var test3=JSON.parse(JSON.stringify(test2));
test3[0]。名称='test3';
//开放式控制台
console.log('Test2:',Test2[0]);//对象{name:“test2”}

log('Test3:',Test3[0]);//对象{name:“test3”}
对象本质上是引用。必须创建新对象并指定另一个对象的值:

var test3 = [ Object.assign({}, test2[0]) ];

使用simple
.map
将一个对象数组复制到另一个对象数组

var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
//var test3 = test2.slice(0); //doesn't work. objects are still references
var test3 = test2.map(function(obj){
  //return obj; //doesn't work. objects are still references
  var o={}; //create brand new object
  for(var prop in obj)
    o[prop]=obj[prop];//assign properties
  return  o;//works
});

test3[0].name = 'test3';

// Open console
console.log('Test2: ',test2[0]);
console.log('Test3: ',test3[0]);

您不必序列化,我相信
[].splice(0,0,arr)
将复制PrimitiveSSORY
[].concat(arr)
@kirinthos no.这样您也会遇到同样的问题。检查这里:嗯,我说的是数组primitives@kirinthos,如果您的意思是原语数组是,那么您可以只使用
var test3=test2.slice()如下所示: