Может помочь это - реализация кусочно-константной функции
/**
* Рассчитывает кусочно-константную функцию
*
* @author Boew Grigory (ff.nspu@gmail.com)
* @param {Array} data Входные данные (аргумент)
* @param {Array} criteria Массив критериев [от, до, значение]
* @param {any} [defaultValue=""] Значение по умолчанию - то что подставляется, если аргумент не подходит ни под один из критериев
*/
function piecewiseConstant(data, criteria, defaultValue="-"){
criteria = criteria
.map(cr=>({ // convert to objects
fromValue: cr[0],
toValue: cr[1],
value: cr[2],
}))
.filter(cr=>cr.fromValue!=="" && cr.toValue!==""); // filter empty criteria
return data.map(row=>row.map(el=>{
let foundCriteria = criteria.find(cr=>(el>=cr.fromValue)&&(el<cr.toValue));
if (foundCriteria!==undefined){
return foundCriteria.value;
}else{
return defaultValue;
};
}));
};