如何合并数组并获得两个数组Dart的字段的访问权限



我想合并这两个数组,并从这两个模型的字段中获取到字段的访问权限。我怎样才能做到这一点?现在我有两个模型NameGender,我希望所有男性的名字都相关,所有女性的名字都与女性相关。

支持的输出为:

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_id1和3是JohnMike
Person类中有gender_id1。

因此,您有一个在Person类中指定的任何性别的名称列表。

最新更新