#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));
Комментариев нет:
Отправить комментарий