如何将数组数据复制到具有数组和字段的对象?

时间:2014-07-01 07:19:36

标签: javascript

我有:

var test;
var abc = [1,2,3];
test.active = [];
test.active.$selected = 123;

是否可以将包含[1,2,3]的数组复制到test.active数组中而不进行test.active。$ selected = 123消失?

当我尝试test.active = abc时,$ selected的值将丢失。

2 个答案:

答案 0 :(得分:0)

您可以使用Array.prototype.push()apply()结合将元素复制到test.active数组,同时保持所有属性的完整。

注意:您没有将test定义为对象,所以我改变了它。

Fiddle

var test = {}; // define as object
var abc = [1,2,3];
test.active = [];
test.active.$selected = 123;

// copy abc's elements to test.active, while keeping any of test.active's properties
test.active.push.apply(test.active, abc);

console.log(test.active.$selected); // 123
console.log(test.active[0]); // 1
console.log(test.active[1]); // 2
console.log(test.active[2]); // 3

答案 1 :(得分:-1)

实际上,是的,它是可能的。但我不确定你是否需要它。用一种简单的方式:

var test;
test.active = [1,2,3];
test.active.$selected = 123;

在这种情况下,您将为test.active分配一个新数组。一旦JavaScript成为一个对象 - 你可以为它添加一个新属性。但从常识的角度来看 - 将两种不同的数据类型(数组和对象)混合起来并不是一个好习惯。因此,在您的情况下,我建议对数组和整数值使用单独的属性:

var test;
test.active = [1,2,3];
test.$selected = 123;

注意:如果你有一个更复杂的数组,例如对象等 - 使用任何库进行深度克隆是更好的选择。但这取决于你的确切问题。