我想合并这两个数组,并从这两个模型的字段中获取到字段的访问权限。我怎样才能做到这一点?现在我有两个模型Name
和Gender
,我希望所有男性的名字都相关,所有女性的名字都与女性相关。
支持的输出为:
print (Name(name:'John', name:'Mike': [Gender(gender: 'male')], Name(name: 'Kate'), Name(name: 'Kate') : [Gender(gender: 'female')]))`
代码:
void main() {
List<Name> names = <Name>[Name(name:'John'), Name(name: 'Kate'),Name(name:'Mike'), Name(name: 'Kate') ];
List<Gender> gender =<Gender>[Gender(gender: 'male'), Gender(gender: 'female')];
List<Person> person = <Person>[Person(gender_id: 1, name_id: 1),Person(gender_id: 2, name_id: 2), Person(gender_id: 1, name_id: 3), Person(gender_id: 2, name_id: 4) ];
names.forEach((el){
gender.where((elem) => elem.gender == el.nameId.compareTo(person.where(element) => element.)
}
}
class Name{
final int? nameId;
final String? name;
Name({this.name, this.nameId});
}
class Gender{
final int? genderId;
final String? gender;
Gender({this.gender, this.genderId});
}
class Person{
final int? gender_id;
final int? name_id;
Person({this.gender_id, this.name_id});
}
DartPad链接-https://dartpad.dev/?null_safety=true
我正在尝试使用forEach()
和where()
方法,根据一个模型的名称和性别将元素分配给另一个模型中的元素。我该如何实现它?
创建实例时必须分配id,因为只有我们在比较id。
我在创建实例时做了一些修改。
void main() {
List<Name> names = <Name>[
Name(name: 'John', nameId: 1),
Name(name: 'Kate', nameId: 2),
Name(name: 'Mike', nameId: 3),
Name(name: 'Kate', nameId: 4),
];
List<Gender> gender = <Gender>[
Gender(gender: 'male', genderId:1),
Gender(gender: 'female', genderId:2)
];
List<Person> person = <Person>[
Person(gender_id: 1, name_id: 1),
Person(gender_id: 2, name_id: 2),
Person(gender_id: 1, name_id: 3),
Person(gender_id: 2, name_id: 4)
];
/// <---- main solution
final Map<int, List<int>> name_id_list = {};
for (final g in gender) {
for (final p in person) {
if (g.genderId == p.gender_id) {
name_id_list[g.genderId!] = name_id_list[g.genderId] == null
? [p.name_id!]
: [...name_id_list[g.genderId]!, p.name_id!];
}
}
}
name_id_list.forEach((k, v) {
print('for gender id $k, name ids are: ');
for(final value in v){
print(value);
}
print('n');
});
}
这是控制台输出:
for gender id 1, name ids are:
1
3
for gender id 2, name ids are:
2
4
现在,name_id
1和3是John
和Mike
Person
类中有gender_id
1。
因此,您有一个在Person
类中指定的任何性别的名称列表。