Javascript angular.extend/merge具有数组属性的对象

Javascript angular.extend/merge具有数组属性的对象,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,如果我有这些对象: var first = {arr: ["foo"]}; var second = {arr: ["bar"]}; 然后呢 angular.extend(first, second); 这将是国家: first.arr[0] //"bar" first.arr === second.arr;//true 我想要第一部分,但我不希望数组是相同的引用 当我尝试 angular.merge(first,second); 然后,首先不会发生任何事情。arr first.arr[

如果我有这些对象:

var first = {arr: ["foo"]};
var second = {arr: ["bar"]};
然后呢

angular.extend(first, second);
这将是国家:

first.arr[0] //"bar"
first.arr === second.arr;//true
我想要第一部分,但我不希望数组是相同的引用

当我尝试

angular.merge(first,second);
然后,
首先不会发生任何事情。arr

first.arr[0]; //"foo

使用
second
的属性扩展
first
的正确方法是什么,包括数组,但不具有相同的引用?

您可以将两个对象合并到新对象中:

angular.extend({}, first, second);
那么它应该是你想要的:

var first = {arr: ["foo"]};
var second = {arr: ["bar"]};

var result = angular.extend({}, first, second);

console.log(result.arr[0]); // bar
console.log(first.arr === second.arr); // false

问题是,
first
是我在不同地方使用的价值服务,所以我需要首先更新
first.arr
。是否有角度。复制我能用的东西?