Javascript 如何从数组中剪切对象并将其放入对象本身
我有一个包含数组的响应对象:Javascript 如何从数组中剪切对象并将其放入对象本身,javascript,Javascript,我有一个包含数组的响应对象: Cars: [0]: { Name: 'Name1', Color: 'Color2' }, [1]: { Name: 'Name2', Color: 'Color2' }, 我想复制数组中的第一项并将其放入对象,Cars必须查看: Cars: { Name: 'Name1', Color: 'Color' }, 如果您在
Cars:
[0]: {
Name: 'Name1',
Color: 'Color2'
},
[1]: {
Name: 'Name2',
Color: 'Color2'
},
我想复制数组中的第一项并将其放入对象,Cars
必须查看:
Cars:
{
Name: 'Name1',
Color: 'Color'
},
如果您在内存中描绘事物,并且
Cars
引用包含对象的数组,并且您的目标是让Cars
仅引用这些对象中的第一个,则可以执行以下操作:
Cars = Cars[0];
如果Cars
变量是唯一引用该数组的变量,那么该数组就有资格进行垃圾收集。如果数组对另一个对象的引用是对该对象的唯一引用,那么该另一个对象([1]
)也可以进行垃圾收集
一些ASCII艺术可能在这里有所帮助:
首先,您有:
+-----------------+
+------+ +---------+ +--->| (object) |
| Cars |----->| (array) | | +-----------------+
+------+ +---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
+------+
| Cars |--------------------+
+------+ |
| +-----------------+
+---------+ +--->| (object) |
| (array) | | +-----------------+
+---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
你有这个:
+-----------------+
+------+ +---------+ +--->| (object) |
| Cars |----->| (array) | | +-----------------+
+------+ +---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
+------+
| Cars |--------------------+
+------+ |
| +-----------------+
+---------+ +--->| (object) |
| (array) | | +-----------------+
+---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
+------+
|汽车|--------------------+
+------+ |
| +-----------------+
+---------++-->|(对象)|
|(数组)| |+----------------+
+---------+| |名称:“名称1”
|0 |--+|颜色:“Color2”
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->|(对象)|
+-----------------+
|名称:“名称2”|
|颜色:“Color2”|
+-----------------+
请注意,不再有任何东西指向数组,因此如果发生垃圾回收,您将得到以下结果:
+------+ +-----------------+
| Cars |----->| (object) |
+------+ +-----------------+
| Name: 'Name1' |
| Color: 'Color2' |
+-----------------+
+------+ +-----------------+
|汽车------->(对象)|
+------+ +-----------------+
|名称:“名称1”|
|颜色:'Color2'|
+-----------------+
当然,如果其他对象确实引用了该数组,那么该数组就不会是GC'd(同样,如果其他对象引用了第二个对象,它也不会是GC'd)。但是,如果我们假设没有其他对象具有这些引用,就会发生这种情况。如果您在内存中描述事物,并且
汽车
引用包含对象的数组,并且您的目标是让汽车
仅引用这些对象中的第一个,则可以执行以下操作:
Cars = Cars[0];
如果Cars
变量是唯一引用该数组的变量,那么该数组就有资格进行垃圾收集。如果数组对另一个对象的引用是对该对象的唯一引用,那么该另一个对象([1]
)也可以进行垃圾收集
一些ASCII艺术可能在这里有所帮助:
首先,您有:
+-----------------+
+------+ +---------+ +--->| (object) |
| Cars |----->| (array) | | +-----------------+
+------+ +---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
+------+
| Cars |--------------------+
+------+ |
| +-----------------+
+---------+ +--->| (object) |
| (array) | | +-----------------+
+---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
你有这个:
+-----------------+
+------+ +---------+ +--->| (object) |
| Cars |----->| (array) | | +-----------------+
+------+ +---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
+------+
| Cars |--------------------+
+------+ |
| +-----------------+
+---------+ +--->| (object) |
| (array) | | +-----------------+
+---------+ | | Name: 'Name1' |
| 0 |---+ | Color: 'Color2' |
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->| (object) |
+-----------------+
| Name: 'Name2' |
| Color: 'Color2' |
+-----------------+
+------+
|汽车|--------------------+
+------+ |
| +-----------------+
+---------++-->|(对象)|
|(数组)| |+----------------+
+---------+| |名称:“名称1”
|0 |--+|颜色:“Color2”
| 1 |---+ +-----------------+
+---------+ |
| +-----------------+
+--->|(对象)|
+-----------------+
|名称:“名称2”|
|颜色:“Color2”|
+-----------------+
请注意,不再有任何东西指向数组,因此如果发生垃圾回收,您将得到以下结果:
+------+ +-----------------+
| Cars |----->| (object) |
+------+ +-----------------+
| Name: 'Name1' |
| Color: 'Color2' |
+-----------------+
+------+ +-----------------+
|汽车------->(对象)|
+------+ +-----------------+
|名称:“名称1”|
|颜色:'Color2'|
+-----------------+
当然,如果其他对象确实引用了该数组,那么该数组就不会是GC'd(同样,如果其他对象引用了第二个对象,它也不会是GC'd)。但是,如果我们假设其他任何东西都没有这些引用,就会发生这种情况。请检查:
要显示console.log()
,您需要firebug或一些开发工具检查以下内容:
要显示
console.log()
,您需要firebug或一些开发工具您的响应是什么格式?如果您使用的是jquery,并且您的响应是json,那么javascript或jsontry函数$.parseJSON似乎就不存在了:您真正的问题是“如何将我的自定义格式转换为json/JS”,因为它太简单了:cars=cars[0];您的问题似乎是:“如何访问数组元素”和“如何为变量赋值”。这些东西通常都包含在一个。而且,让一个名为cars(复数)的变量包含一个对象也是不好的做法。。。复数形式通常用于数组,表示您有一组相同类型的数据。您的响应是什么格式?如果您使用的是jquery,并且您的响应是json,那么javascript或jsontry函数$.parseJSON似乎就不存在了:您真正的问题是“如何将我的自定义格式转换为json/JS”,因为它太简单了:cars=cars[0];您的问题似乎是:“如何访问数组元素”和“如何为变量赋值”。这些东西通常都包含在一个。而且,让一个名为cars(复数)的变量包含一个对象也是不好的做法。。。复数形式通常用于数组,以显示您有相同类型的数据集合我无法访问JSFIDLE,您的答案对我来说毫无用处。我需要了解JSFIDLE的共享功能,他们更改了策略我编辑了我的答案,感谢TJ向我解释我无法访问JSFIDLE,你的答案对我来说毫无用处。我需要弄清楚JSFIDLE的共享功能,他们改变了他们的策略。我编辑了我的答案,谢谢TJ向我解释。你真的知道如何回答糟糕的问题。这样的