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

166
02 января 2020, 18:40

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

Например от 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]
];
Answer 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))

Answer 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));

Answer 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));

READ ALSO
Выделение памяти под константы

Выделение памяти под константы

Есть код, работающий в браузере:

107
Как пользоваться оператором if в JS?

Как пользоваться оператором if в JS?

Создать глобальную переменную senseOfLife = 42создать функцию, которая будет принимать параметр otherSenseOfLife

112
Исправить ошибку js

Исправить ошибку js

есть такая форма

110