Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS-Object属性不接受指定的值,只获取数组的最后一个值_Javascript_Arrays_Object - Fatal编程技术网

Javascript JS-Object属性不接受指定的值,只获取数组的最后一个值

Javascript JS-Object属性不接受指定的值,只获取数组的最后一个值,javascript,arrays,object,Javascript,Arrays,Object,我有一个对象数组,每个对象都有一个id列表,如下所示: objects: [ { ids: [1,2], name: 'alpha' }, { ids: [2,3], name: 'bravo' } ] single id array: [1, 2, 3] id = 1 => [alpha (id = 1)] id = 2 => [alpha (id = 2), bravo (id =

我有一个对象数组,每个对象都有一个id列表,如下所示:

objects: [
    {
        ids: [1,2],
        name: 'alpha'
    },
    {
        ids: [2,3],
        name: 'bravo'
    }
]
single id array: [1, 2, 3]

id = 1 => [alpha (id = 1)]
id = 2 => [alpha (id = 2), bravo (id = 2)]
id = 3 => [bravo (id = 3)]
我想把它们都列下来,就像对于每个id,即1、2或3,我在其id属性中列出包含该id的所有对象,并为每个列出的对象创建一个名为id的属性来保存该id,如下所示:

objects: [
    {
        ids: [1,2],
        name: 'alpha'
    },
    {
        ids: [2,3],
        name: 'bravo'
    }
]
single id array: [1, 2, 3]

id = 1 => [alpha (id = 1)]
id = 2 => [alpha (id = 2), bravo (id = 2)]
id = 3 => [bravo (id = 3)]
但是,当我运行它时,所有列出的对象只会得到其id中的最后一个id,即仅2或3,尽管我循环通过单个id数组1、2、3并分配了每个id

single id array: [1, 2, 3]

id = 1 => [alpha (id = 2)]
id = 2 => [alpha (id = 2), bravo (id = 3)]
id = 3 => [bravo (id = 3)]
以下是一个例子:

新Vue{ el:“应用程序”, 数据:{ 消息:“您好,Vue.js!”, 列表数据:[ { ID:[1,2], 名称:“阿尔法” }, { ID:[1,2], 名字:“好极了” }, { ID:[1,2,3], 名称:“伽马” }, { ID:[3,4], 名称:'delta' } ], 详细数据:[] }, 创造{ var-id=[]; this.listData.forEachdata=>{ data.ids.forEachid=>{ 如果!ids.includesid ids.pushid; } } id.forEachid=>{ this.listData.forEachdata=>{ ifdata.id.includeId{ var obj=数据; obj.id=id; this.detailData.pushobj; } } } } } 身份证件 名称 {{data.id} {{data.name}
我认为您的问题在于对象是通过引用传递的,当您将对象添加到detailData时,它是对该对象的引用,稍后您将对该对象进行更改。如果在将对象添加到detailData之前复制该对象,我认为可以解决您的问题:

新Vue{ el:“应用程序”, 数据:{ 消息:“您好,Vue.js!”, 列表数据:[ { ID:[1,2], 名称:“阿尔法” }, { ID:[1,2], 名字:“好极了” }, { ID:[1,2,3], 名称:“伽马” }, { ID:[3,4], 名称:'delta' } ], 详细数据:[] }, 创造{ var-id=[]; this.listData.forEachdata=>{ data.ids.forEachid=>{ 如果!ids.includesid ids.pushid; } } id.forEachid=>{ this.listData.forEachdata=>{ ifdata.id.includeId{ var obj=数据; obj.id=id; this.detailData.push{…obj};//…生成对象的浅拷贝 } } } } } 身份证件 名称 {{data.id} {{data.name}
是的,对象的浅拷贝确实可以解决问题。我也认为这是一个参考资料。但是当数组中的对象有大量字段,并且每个对象的所有字段都不完全相同时,那么这个唯一的副本就变得非常痛苦。但是谢谢你!