我有:
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的值将丢失。
答案 0 :(得分:0)
您可以使用Array.prototype.push()
与apply()
结合将元素复制到test.active
数组,同时保持所有属性的完整。
注意:您没有将test
定义为对象,所以我改变了它。
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;
注意:如果你有一个更复杂的数组,例如对象等 - 使用任何库进行深度克隆是更好的选择。但这取决于你的确切问题。