Javascript JS-Object属性不接受指定的值,只获取数组的最后一个值
我有一个对象数组,每个对象都有一个id列表,如下所示: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 =
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}
是的,对象的浅拷贝确实可以解决问题。我也认为这是一个参考资料。但是当数组中的对象有大量字段,并且每个对象的所有字段都不完全相同时,那么这个唯一的副本就变得非常痛苦。但是谢谢你!