Функция отображения массива в реакции для троичного оператора - PullRequest
0 голосов
/ 15 ноября 2018

Это мой массив

var CountryList = [{ name: Canada, value: 1 },
    { name: USA, value: 2 }]

Это операция, которую я сейчас использую

var filterStr = nextProps.Country.value == "1" ? 'Canada' : 'USA';

Теперь я хочу использовать массив CountryList в приведенном выше коде, используя для проверки, выбран ли Канада или США. Это сделано с использованием map ? Если это США, я хочу заселить штаты США еще одним выпадающим списком. Если это Канада, то Штаты Канады. ТАК согласно выбору из этого массива я хочу заполнить Штаты. Мне нужно проверить выбранную страну. т.е. я хочу получить название страны. Как это сделать?

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018
var states = {USA: [{name: 'A', value:1},..],Canada: []} 
var country = CountryList.find(country => country.value == nextProps.Country.value).name;
if (states[county]){
    this.setState({states: states[country], enabledStates: true});
}else{
    this.setState({states: [], enabledStates: false});
}

Показать состояния на основе флага enabledState.

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

map - неправильная функция для использования здесь.Вы должны использовать либо find, либо filter функцию. let country = CountryList.find((c) => (c.value === 1)) country = country && country.name

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

Если вы хотите, чтобы массив всех стран, имеющих имя США для примера, можно использовать фильтр следующим образом:

CountryList.filter = country => country.value === 1 ;

или если вы хотите проверить, существуют ли США для примера в этом массиве, выможно использовать "найти"

...