Вот рабочий код:
const elements = 3;
const isMatchFound = () => {
let conditions = [];
conditions.push($("#input[type'radio']:eq(0").is(":checked"));
for (let i = 0; i < elements; i++) {
conditions.push($(document).find(".segment:eq(" + i + ")").data("stops") <= filterData.stops[i]);
}
// for test purposes
//conditions = [true, true, false]; => false
//conditions = [true, true, true]; => true
return conditions.every(a => a === true);
};
const foundMatch = isMatchFound();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" name="sample" value="abc" checked />
<input type="radio" name="sample" value="def" />
<input type="radio" name="sample" value="xyz" />
Вы заполняете массив результатов условий, а затем проверяете, все ли условия true
.
Это решение использует Array.prototype.every () , метод, который проверяет, проходит ли каждый элемент массива тест, указанный вами в качестве параметра.
Здесь мой тест равен a => a === true
, чтоES6 Функции стрелок .По сути, это просто еще один способ записи function (a) { return a === true; }
.
Итак, тест состоит в простой проверке, строго ли равна предоставленная переменная (которую я назвал a
в данном случае) true
.