Функциональный JavaScript, функция возвращает bool на массиве отображения условий - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужно набрать sh в массиве городов, если такого города нет

getCityList() {
    const { StoreInfo } = this.props;
    this.emptyCityList();
    return StoreInfo.map((StoreInfo, index) => {
        console.log(this.cityPushCheck(StoreInfo.city));
        if (this.cityPushCheck(StoreInfo.city)) {
            CITY_LIST.push({
                id: index, label: StoreInfo.city, value: StoreInfo.city, disabled: false
            });
        }
    });
}

cityPushCheck(city) {
    const MAP = CITY_LIST.map((CITY_LIST) => {
        if (CITY_LIST.label === city) {
            console.log('are equal');
            return false;
        }
    });

    return true;
}

Я пытался return CITY_LIST.map((CITY_LIST) =>

без const или возврат CITY_LITS.map не работает, не могу получить его. что я делаю не так?

[ОБНОВЛЕНИЕ] Так что это решение сработало для меня

getCityList() {
    const { StoreInfo } = this.props;
    this.emptyCityList();
    return StoreInfo.map((StoreInfo, index) => {
        if (this.cityPushCheck(StoreInfo.city)) {
            CITY_LIST.push({
                id: index, label: StoreInfo.city, value: StoreInfo.city, disabled: false
            });
        }
    });
}

cityPushCheck(cityLabel) {
    const cityFromList = CITY_LIST.find(city => city.label === cityLabel);
    return cityFromList === undefined;
} 

благодаря @ quittle

Ответы [ 2 ]

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

Немного неясно, что именно вы просите, но я считаю, что ваш вопрос заключается в том, как реализовать cityPushCheck, чтобы он возвращал false, если город находится в CITY_LIST и true в противном случае. Предполагая, что CITY_LIST является массивом, есть полезная функция с именем find для массивов, которая жадно проверяет наличие записи на основе условия.

cityPushCheck(cityLabel) {
    // Grabs the instance of the city from the list if it was present
    const cityFromList = CITY_LIST.find(city => city.label === cityLabel);
    // cityFromList will be undefined if "find" didn't have a match
    return cityFromList === undefined;
}
0 голосов
/ 11 апреля 2020

При использовании карты вы go указывали город за городом в вашем массиве и для каждого возвращаемого логического значения. Вы можете рассмотреть использование фильтра, а затем проверить, имеет ли фильтрованный массив какую-либо длину только один раз


   cityPushCheck(city) {
    CITY_LIST.filter(CITY => CITY.label == city).length
 }

Теперь, если в массиве нет такого города, длина равна 0, что равно ложь при JS

...