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向我解释。你真的知道如何回答糟糕的问题。这样的