Получить индекс элемента в L oop для сопоставления с сохраненными индексами - PullRequest
1 голос
/ 25 апреля 2020

У меня есть сценарий, в котором я хочу выполнить действие, если строка в списке строк соответствует индексу в списке целых (генерируется на основе списка строк)

Ниже приведен псевдокод для попытайтесь сформулировать, чего я пытаюсь достичь.

List<int> wordIndex = [1,3,5];
List<String> wordList = ['this', 'is','a', 'test', 'a'];

//Pseudo code
wordList.forEach(word)) {
 if (wordIndex item matches index of word) {
    do something;
  } else {
    od something else;
 }
}

это if (wordIndex item matches index of word), где у меня возникла проблема, и буду признателен за любые идеи.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Просто используйте for вместо forEach;

List<int> wordIndex = [1,3,5];
List<String> wordList = ['this', 'is','a', 'test', 'a'];

//Pseudo code
for (int i = 0; i < wordList.length; i++) {
  if (wordIndex.contains(i)) {
    do something;
  } else {
    od something else;
 }
}
0 голосов
/ 25 апреля 2020

Если я вас правильно понимаю, вы хотите знать, содержится ли в вашем списке wordIndex индекс слова, т.е. вы хотите получить все wordList элементы с индексом, который хранится в wordIndex.

Существует два подхода к этому:

Использование Iterable.contains

В этом случае мы просто проверяем, присутствует ли текущий индекс в wordIndex список.

for (var index = 0; index < wordList.length; index++) {
  if (wordIndex.contains(index)) {
    // do something
    return;
  }

  // do something else
}

L oop - wordIndex

Если вы просто заинтересованы в соответствующих элементах , этот подход более разумен.
Здесь мы проведем oop через список индексов и затем просто получим соответствующие элементы в wordList. Однако вы не сможете выполнять действия для несоответствующих элементов:

for (final index in wordIndex) {
  final word = wordList[index];

  // do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...