У меня есть два раскрывающихся списка: один для страны, а другой - для гражданства. Оба раскрывающихся списка имеют общий массив: countryAndNationalityList.
Я пытаюсь отобразить соответствующую национальность только один раз, поскольку она одинакова для каждой страны.
<select class="form-control" formControlName="residence_country">
<option *ngFor="let item of removeNationalityDuplicates(countryAndNationalityList.sort(sortCountryAsc))" [ngValue]="item.country">{{item.country}}</option>
</select>
<select class="form-control" formControlName="nationality">
<option value="" disabled>Your Nationality?</option>
<option *ngFor="let item of countryAndNationalityList.sort(sortNationalityAsc)" [ngValue]="item.nationality">{{item.nationality}}</option>
</select>
Мой массив countryAndNationalityList выглядит следующим образом :
[{country: "United Arab Emirates Abu Dhabi", nationality: "Emirati"},
{country: "United Arab Emirates Ajman", nationality: "Emirati"},
{country: "United Arab Emirates Al-Quwain", nationality: "Emirati"},
{country: "United Arab Emirates Dubai", nationality: "Emirati"},
{country: "United Arab Emirates Fujairah", nationality: "Emirati"},
{country: "United Arab Emirates Ras Al Khaimah", nationality: "Emirati"},
{country: "United Arab Emirates Sharjah", nationality: "Emirati"}]
Я пытаюсь удалить дубликаты Emirati в раскрывающемся списке Национальность с помощью функции: removeNationalityDuplicates, которая удаляет дубликаты следующим образом:
<select class="form-control" formControlName="nationality">
<option value="" disabled>Your Nationality?</option>
<option *ngFor="let item of removeNationalityDuplicates(countryAndNationalityList.sort(sortNationalityAsc))" [ngValue]="item.nationality">{{item.nationality}}</option>
</select>
где removeNationalityDuplicates -
removeNationalityDuplicates(array) {
return [... new Set(array)];
}
sortNationalityAsc(previous, next) {
return previous.nationality > next.nationality;
}
Я также пробовал использовать:
removeNationalityDuplicates(array) {
return array.reduce((uniqueArr, curVal)=> {
if (!uniqueArr.includes(curVal.nationality)) {
uniqueArr.push(curVal);
}
return uniqueArr;
}, []);
}
Как удалить повторяющиеся национальности?