如何从数组中剪切对象并将其放入对象本身

时间:2014-08-08 07:27:33

标签: javascript

我有包含数组的响应对象:

Cars:
[0]: {
       Name: 'Name1',
       Color: 'Color2'
     },
[1]: {
       Name: 'Name2',
       Color: 'Color2'
     },

我想复制数组中的第一项并将其放到对象中,Cars必须查看:

Cars:
     {
           Name: 'Name1',
           Color: 'Color'
      },

2 个答案:

答案 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或一些开发工具