Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Как получить значение числа?

#javascript


Как получить значение из числа? 

Например от 0 до 49 значение будет равно 1, от 50 до 149 равно 2 и так далее...

Например есть переменная 


  var d = 30;


согласно той таблицы мне нужно получить 1. 

То есть от 0 до 49 я всегда должен получать в переменную 1 (например переменную var
x ='';) 

Ну и так везде от 50 до 149 число 2, от 150 до 349 число 3

app.Data = [
    [0, 0, 0],
    [1, 0, 49],
    [2, 50, 149],
    [3, 150, 349],
    [4, 350, 849],
    [5, 850, 1849],
    [6, 1850, 3849],
    [7, 3850, 5849],
    [8, 5850, 9849],
    [9, 9850, 15849],
    [10, 15850, 23849]
];

    


Ответы

Ответ 1



Можно, например, обойти Ваш массив массивов с помощью reduce, найти массив, в диапазон которого попадает искомое число, и вернуть его первый элемент: const arr = [ [0, 0, 0], [1, 0, 49], [2, 50, 149], [3, 150, 349], [4, 350, 849], [5, 850, 1849], [6, 1850, 3849], [7, 3850, 5849], [8, 5850, 9849], [9, 9850, 15849], [10, 15850, 23849] ]; const getNum = function(num) { let result = arr.reduce((acc, item) => { if(num >= item[1] && num <= item[2] ) { return acc = item[0]; } return acc; }, 0) return result; } console.log(getNum(30)) console.log(getNum(500)) console.log(getNum(1500))

Ответ 2



var app = { Data: [ [0, 0, 0], [1, 0, 49], [2, 50, 149], [3, 150, 349], [4, 350, 849], [5, 850, 1849], [6, 1850, 3849], [7, 3850, 5849], [8, 5850, 9849], [9, 9850, 15849], [10, 15850, 23849] ] }; function mapValue(map, value) { if (map.length && (value < map[0][1] || value > map[map.length - 1][2])) return NaN; for (var i = 0; i < map.length; i++) { if (value >= map[i][1] && value <= map[i][2]) { return map[i][0]; } } return NaN; } console.log(mapValue(app.Data, 2222)); console.log(mapValue(app.Data, 55555)); console.log(mapValue(app.Data, -5555));

Ответ 3



let app = {}; app.Data = [ [0, 0, 0], [1, 0, 49], [2, 50, 149], [3, 150, 349], [4, 350, 849], [5, 850, 1849], [6, 1850, 3849], [7, 3850, 5849], [8, 5850, 9849], [9, 9850, 15849], [10, 15850, 23849] ]; function findInterval(data, value) { let interval = data.find(int => int[1] <= value && int[2] >= value); return interval ? interval[0] : NaN; } console.log(findInterval(app.Data, 0)); console.log(findInterval(app.Data, 50)); console.log(findInterval(app.Data, 1000)); console.log(findInterval(app.Data, 100000));

Комментариев нет:

Отправить комментарий