#arrays #flutter #dart
#массивы #flutter #dart
Вопрос:
Допустим, у меня есть список массивов, как указано
Array listarray = ['1','2','3','3','3','4','5','6','6','7','8']
for (int i = 0; i<listarray.length; i ){
if(listarray[i] == '3'){
return 'this is three';
}else if (listarray[i] == '6'){
return 'this is six';
}
}
он вернется как
this is threethis is threethis is threethis is sixthis is six
Я хотел бы знать, есть ли у меня способ вернуть только первый или, может быть, ограничить его только 1 возвратом?
так что это будет что-то вроде
this id threethis is six
Ответ №1:
Прежде всего: в dart нет типа Array, хотя есть List.
Вы можете удалить дубликаты, преобразовав list в set:
var listarray = ['1','2','3','3','3','4','5','6','6','7','8'];
listarray = listarray.toSet().toList();
Ответ №2:
Поскольку другие ответы дали правильный подход к использованию sets
. Мой подход немного отличается, учитывая вышеуказанные условия, то есть для поиска минимально возможных элементов
Для этого мой алгоритм:
1. take two bools, which will keep a track on the items, in this case, for element 6 and 3
2. If conditions check for the item == the element and if the bool is false
3. If satisfies, make the bool return true, and print the item
Пожалуйста, обратите внимание: я использую print
, вы можете использовать свой return
, вместо print в коде
void main() {
bool _threeFound = false;
bool _sixFound = false;
List<String> listarray = ['1','2','3','3','3','4','5','6','6','7','8'];
for(var item in listarray){
// it won't come unless satisfies the condition
// and it will come only once
if(item == '3' amp;amp; _threeFound == false){
_threeFound = true;
print('this is three');
}else if(item == '6' amp;amp; _sixFound == false){
_sixFound = true;
print('this is six');
}
}
}
Вывод
this is three
this is six
Ответ №3:
Вы можете попробовать это:
import 'dart:collection';
void main() {
var arr = ['1','2','3','3','3','4','5','6','6','7','8'];
//make values unique
var uniqueValues = LinkedHashSet.from(arr);
//transform input values to output values
var mappedValues = uniqueValues.map((item){
if(item == '3'){
return 'this is three';
} else if (item == '6'){
return 'this is six';
}
}).toList();
//remove null value from output
mappedValues.removeWhere((value) => value == null);
print(mappedValues);
}