Как использовать логический флаг в цикле for? - PullRequest
0 голосов
/ 01 июля 2019

Я хочу вызвать функцию (отображающую модальный режим), когда определенное условие выполнено (две строки совпадают друг с другом). Условия изменяются и задаются в цикле for (он циклически повторяет элементы двух файлов JSON).

Возможны три условия:

1) без ввода строк, без совпадений, без проблем;

2) Я набираю строку: цикл for говорит мне, что строки не совпадают;

3) Я набираю строку: цикл for сообщает мне, что строки совпадают.

Второе и третье условия являются проблемными, так как они находятся внутри цикла for, и мне нужно вызвать определенное действие для каждого из них, избегая повторения действия для каждого элемента в цикле, когда условие 2) выполнено выполнено.

Я хочу установить логический флаг , но я не уверен, что понял, как его использовать. Я создал переменную вне цикла for и присвоил ей значение «false». Внутри цикла for я вызываю такую ​​переменную, присваивая ей значение «true». Вне второго цикла for я вызываю его в операторе if, который вызывает функцию для показа модальных значений.

Я написал следующий код:

function validateCitta() {
    $("#cercaCitta").prop("disabled", false);        
    let text = $('#inlineFormInputCitta').val();
    if (text === "") {
        $("#errorLog").show();
    }
    else {   


        var check = false;    //  I set the flag variable 


        $.ajax({
            url: "https://nominatim.openstreetmap.org/search?q=" + encodeURIComponent($("#inlineFormInputCitta").val()) + "&format=geocodejson",
            dataType: "json",
            success: function (data) {
                for (let i = 0; i < data.features.length; i++) {
                    let typeCity = data.features[i].properties.geocoding.type;
                    if (typeCity === "city") {
                        let nameCity = data.features[i].properties.geocoding.name;
                        for (let i = 0; i < json.tappe.length; i++) {
                            let tappa = json.tappe[i];
                            let city = json.tappe[i].city;
                            if (city === nameCity) {
                                console.log("JSON file has been activated");


                                check = true;  // the condition 3 is fulfilled, then I perform the action below:

                                $("#tbody").append("<tr><td>" + tappa.name + "</td><td>" + tappa.state + "</td><td>" + tappa.region + "</td><td>" + tappa.city + "</td></tr>");                                    
                            }    
                            else if (check){     // the condition 3 is false, the condition 2 is fullfilled, then I show the Modal:
                                $('#myModal').show();
                            }    
                            ;
                        }                           
                        ;
                    }
                }
            }
        })           
    }
};

Как правильно установить и вызвать логический флаг? Можете ли вы показать мне несколько примеров, чтобы лучше понять использование такой конкретной переменной и различия между ее использованием с нуля и в цикле?

...