Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.11.2021, 11:18
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 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"]];

Как проверять количество очков по диапазону?
Ответить с цитированием
  #2 (permalink)  
Старый 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);
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2021, 19:27
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 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" и т.д?
Ответить с цитированием
  #4 (permalink)  
Старый 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>
Ответить с цитированием
  #5 (permalink)  
Старый 20.11.2021, 00:01
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

У меня в базе данных есть два поля min и max по ним идет сравнения какую запись показать, там уже достаточно записей внесено и если сравнивать только по одному значению, то придется менять структуры бд, а данные в массивах были взяты просто для примера.

Последний раз редактировалось Katy93, 20.11.2021 в 00:04.
Ответить с цитированием
  #6 (permalink)  
Старый 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>
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2021, 11:32
Кандидат Javascript-наук
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 138

Тогда не вижу разницы, мой код который я разместила выше также работает, буду использовать его.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать цитатник? WGN Общие вопросы Javascript 10 29.01.2017 01:39
Обработка ответа $.post запроса - как в блоке div получить переменную массива NeilDaniels jQuery 63 31.05.2016 13:28
Почему ошибка при статусе 200, или как сформировать ответ? [NodeJS&AJAX] blacklool AJAX и COMET 2 10.03.2015 21:36
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53