Функция Javascript, использующая lodash forEach, возвращающая неопределенный - PullRequest
0 голосов
/ 29 ноября 2018

Я пишу приложение ReactJS, и у меня есть цикл for в функции filterSelected, который проходит через массив имен регионов (например, ["Thailand", "Malaysia"]) и должен возвращать массив их соответствующих кодов регионов (например,.["TH", "MY"]).

В моей функции mapRegionToCode он проходит через объект объектов, чтобы выполнить это отображение, и журнал консоли правильно печатает соответствующий код региона, однако функция возвращает undefined.

Любые идеи, которые будут высоко ценится!

mapRegionToCode(region) { // region = "Thailand"
  _.forEach(_.values(this.props.regionsCodes), regionCode => {
    if(regionCode.country.countryName === region) {
      console.log(regionCode.country.countryCode); //"TH"
      return regionCode.country.countryCode;
    }
  });
}

filterSelected(filters) {
...
  for(let i = 0; i < regionsArray.length; i++){
    const regionCode = this.mapRegionToCode(regionName);
    console.log(regionCode); //undefined
    regionNames.push(regionCode);
  }
...
}

1 Ответ

0 голосов
/ 29 ноября 2018

Обновление

Я прочитал, что вы хотели сделать неправильно.Вам нужно сделать следующее:

  1. Найти regionCode с country.countryName === region
  2. Вернуть его country.countryCode

С помощью lodash вы можетевыполните следующие действия:

mapRegionToCode(region) {
  return _.find(_.values(this.props.regionsCodes),regionCode => regionCode.country.countryName === region).country.countryCode
}

Оригинальный ответ

Вы забыли добавить return в свою функцию mapRegionToCode:

mapRegionToCode(region) { // region = "Thailand"
  return _.map(_.values(this.props.regionsCodes), regionCode => {
    if(regionCode.country.countryName === region) {
      console.log(regionCode.country.countryCode); //"TH"
      return regionCode.country.countryCode;
    }
  });
}

(Также вам нужно использовать _.map вместо _.forEach)

...