我有包含数组的响应对象:
Cars:
[0]: {
Name: 'Name1',
Color: 'Color2'
},
[1]: {
Name: 'Name2',
Color: 'Color2'
},
我想复制数组中的第一项并将其放到对象中,Cars
必须查看:
Cars:
{
Name: 'Name1',
Color: 'Color'
},
答案 0 :(得分:5)
如果您在内存中描绘内容,并且Cars
引用包含对象的数组,并且您的目标是让Cars
仅引用这些对象中的第一个,则可以执行以下操作:
Cars = Cars[0];
如果Cars
变量是唯一一个引用该数组的变量,那么该数组就有资格进行垃圾回收。如果数组对另一个对象的引用是对该对象的唯一引用,则该另一个对象([1]
)也有资格进行垃圾回收。
有些ASCII艺术可能会有所帮助:
首先,你有这个:
+-----------------+ +------+ +---------+ +--->| (object) | | Cars |----->| (array) | | +-----------------+ +------+ +---------+ | | Name: 'Name1' | | 0 |---+ | Color: 'Color2' | | 1 |---+ +-----------------+ +---------+ | | +-----------------+ +--->| (object) | +-----------------+ | Name: 'Name2' | | Color: 'Color2' | +-----------------+
然后当你这样做:
Cars = Cars[0];
你有这个:
+------+ | Cars |--------------------+ +------+ | | +-----------------+ +---------+ +--->| (object) | | (array) | | +-----------------+ +---------+ | | Name: 'Name1' | | 0 |---+ | Color: 'Color2' | | 1 |---+ +-----------------+ +---------+ | | +-----------------+ +--->| (object) | +-----------------+ | Name: 'Name2' | | Color: 'Color2' | +-----------------+
请注意,没有任何东西指向数组,所以如果发生垃圾收集,你最终会得到这个:
+------+ +-----------------+ | Cars |----->| (object) | +------+ +-----------------+ | Name: 'Name1' | | Color: 'Color2' | +-----------------+
当然,如果的其他内容具有对数组的引用,则该数组将不会是GC(并且类似地,如果其他内容具有对第二个对象的引用,则它赢了不是GC')。但如果我们假设其他任何东西都没有这些参考,那就会发生这种情况。
答案 1 :(得分:1)
检查一下:http://jsfiddle.net/romanian/6no49uwt/
response = [{
'Name': 'Name1',
'Color': 'Color2'
}, {
'Name': 'Name2',
'Color': 'Color2'
}]
console.log(response);
firstCar = response[0];
console.log(firstCar);
要显示console.log()
,您需要使用firebug或一些开发工具