如何推送对象值而不是数组中对象的引用
Posted
技术标签:
【中文标题】如何推送对象值而不是数组中对象的引用【英文标题】:How to push object value instead of reference of the object in array 【发布时间】:2022-01-17 19:00:21 【问题描述】:我创建了一个对象并尝试将其推送到一个数组上。 当我第一次尝试在数组中添加一个对象时,它被完美地添加了,但是当我编辑对象并再次将对象推送到同一个数组时。但是数组中的两个值看起来都一样。
在数组中,它会推送我的对象的引用,当它发生变化时,也会反映在数组中。
能否请人帮我在数组中推送对象值而不是对象的引用?
void checkedItem(int id)
obj!.clear();
obj =
"id": id,
"items":
"artical": "",
"item": "",
"vol": "",
"pc/ctm": "",
"total": "",
"option": false,
"action": "",
,
;
filterList!['special_cases'].forEach((data)
if (data['value'] == true)
temp.add(obj);
);
filterList!['categories'].forEach((data)
data['subCategories'].forEach((item)
if (item['value'] == true)
obj!['items']['item'] = item['name'];
temp.add(obj);
);
);
// print(temp);
update();
void addPhaseItem()
phaseData.add(temp);
print(phaseData);
Get.back();
temp.clear();
update();
【问题讨论】:
首先尝试识别列表中的 id 是否重复,如果没有,则添加新的 快速提问:这与 Firestore 有什么关系? (我同意@ArbiterChil,如果您使用的是通用对象,请检查该项目是否已存在于列表中) 【参考方案1】:替换
temp.add(obj);
与
temp.add(...obj); // note the curly braces for maps and sets
在所有情况下。
"..." 是扩展运算符,允许您将一个集合中的项目插入另一个集合。你可以在 Dart Language Tour 页面上阅读更多关于它们的信息。
【讨论】:
不能解决同样的问题 这很奇怪,因为我编写的代码在 dartpad 上运行良好。你能告诉我你的其余代码吗?我想知道“checkedItem”在哪里被调用,以及你是否不小心覆盖了你自己的列表。以上是关于如何推送对象值而不是数组中对象的引用的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Pandas DataFrame 中获取值而不是索引和对象类型