19.11.2021, 11:18
|
Кандидат Javascript-наук
|
|
Регистрация: 28.12.2018
Сообщений: 138
|
|
Как выводить ответ из массива в зависимости от набранных очков?
Как выводить ответ из массива в зависимости от набранных очков, ориентируясь от показателей min и max? У меня уже есть готовый пример, где сообщение выводится проверяя только одно число, если например количество очков ниже 16, то выводится “Описание 2”, выше 15 “Описание 1”, ниже 11 “Описание 3”, ниже 3 “Описание 4”.
Вот пример как это сделано на js?
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(e){
var N_LEV = 3;
var summa = 3;
var mes = [[0,16,"Описание 1"],
[0,11,"Описание 2"],
[0,4,"Описание 3"],
[0,3,"Описание 4"]];
var i = 0;
console.log(mes[i][1])
while ((summa < mes[i][1]) && (i<N_LEV))
i=i+1;
$("#ball").html("Ваш балл: "+summa);
$("#test").html(mes[i][2]);
});
</script>
<div id="ball"></div>
<div id="test"></div>
</html>
</body>
Здесь достаточно сложно разобрать, что означают эти цифры. Мне нужно сделать так, чтобы проверялись диапазон чисел, тоже самое что и в моем примере, только сравнение происходит между двумя цифрами min и max.
//999 – вместо бесконечности, чтобы обозначить больше 16.
//Первый элемент массива - это min,
//второй max,
//третий "ответ описание"
var mes = [[16,999,"Описание 1"],
[11,15,"Описание 2"],
[4,10,"Описание 3"],
[0,3,"Описание 4"]];
Как проверять количество очков по диапазону?
|
|
19.11.2021, 11:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Katy93,
var mes = [[16,"Описание 1"],
[11,"Описание 2"],
[4,"Описание 3"],
[0,"Описание 4"]];
var n = 12;
var title = mes.find(([a]) => n >= a);
title = title ? title[1] : 'нет описания';
alert(title);
|
|
19.11.2021, 19:27
|
Кандидат Javascript-наук
|
|
Регистрация: 28.12.2018
Сообщений: 138
|
|
рони, Мой пример делает, тоже самое по одной переменной отображает результат, а мне нужно показывать результат по двум переменным min и max.
var mes = [[16,999,"Описание 1"],
[11,15,"Описание 2"],
[4,10,"Описание 3"],
[0,3,"Описание 4"]];
Например если от 16 до 999, то выводится "описание 1",
если от 11 до 15 то "Описание 2" и т.д?
|
|
19.11.2021, 19:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Katy93,
нет смысла в ваших диапазонах, так как где заканчивается один диапазон, там начинается другой. нужны только места(числа перехода).
Сообщение от Katy93
|
Например если от 16 до 999, то выводится "описание 1",
если от 11 до 15 то "Описание 2" и т.д?
|
что не так?
<script>
var mes = [
[16, "Описание 1"],
[11, "Описание 2"],
[4, "Описание 3"],
[0, "Описание 4"]
];
for (var n = 11; n <= 15; n++) {
var title = mes.find(([a]) => n >= a);
title = title ? title[1] : 'нет описания';
document.write(`${n} : ${title} <br>`)
}
for (var n = 16; n <= 25; n++) {
var title = mes.find(([a]) => n >= a);
title = title ? title[1] : 'нет описания';
document.write(`${n} : ${title} <br>`)
}
</script>
|
|
20.11.2021, 00:01
|
Кандидат Javascript-наук
|
|
Регистрация: 28.12.2018
Сообщений: 138
|
|
У меня в базе данных есть два поля min и max по ним идет сравнения какую запись показать, там уже достаточно записей внесено и если сравнивать только по одному значению, то придется менять структуры бд, а данные в массивах были взяты просто для примера.
Последний раз редактировалось Katy93, 20.11.2021 в 00:04.
|
|
20.11.2021, 00:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от Katy93
|
то придется менять структуры бд,
|
а зачем?
<script>
var mes = [
[16, 999, "Описание 1"],
[11, 15, "Описание 2"],
[4, 10, "Описание 3"],
[0, 3, "Описание 4"]
];
for (var n = 11; n <= 15; n++) {
var title = mes.find(([a]) => n >= a);
title = title ? title[2] : 'нет описания';
document.write(`${n} : ${title} <br>`)
}
for (var n = 16; n <= 25; n++) {
var title = mes.find(([a]) => n >= a);
title = title ? title[2] : 'нет описания';
document.write(`${n} : ${title} <br>`)
}
</script>
|
|
22.11.2021, 11:32
|
Кандидат Javascript-наук
|
|
Регистрация: 28.12.2018
Сообщений: 138
|
|
Тогда не вижу разницы, мой код который я разместила выше также работает, буду использовать его.
|
|
|
|