I have a multidimensional array as follows:
var schMatrix = [
['Weight',100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000],
['Rate',395,413,484,560,635,691,763,837,910,982,1082,1155,1231,1304,1379,1452,1527,1570,1676,1750],
];
In my form the user would input a weight. What I am trying to do is if the weight is equal to or below the number in the weight part of the array that the corresponding rate is assigned to a variable.
Am stuck on how to do this. Any push in the right direction is appreciated.
First of all i would suggest you use a Object instead of a 2d-Array:
let schMatrix = {
"Weight": [...,...,...],
"Rate": [...,...,...]
}
Then you can itterate through the "Weight"-Array:
for (let i = 0; i < schMatrix["Weight"].length; i++) {
if(schMatrix["Weight"][i] >= inputWeight){
rate = schMatrix["Rate"][i]
}
}
You will be better off using a map. They are much faster and you can map each weight to a specific rate:
MAP = {
100: 395,
200: 413,
300: 484,
etc...
}
map.get(100) //outputs 395
To map the arrays to a map do the following:
let map = new Map();
for(let i = 0; i < arr1.length; i++){
map.set(arr1[i], arr2[i]);
}
var schMatrix = [
['Weight', 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100,
1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000],
['Rate', 395, 413, 484, 560, 635, 691, 763, 837, 910, 982, 1082, 1155,
1231, 1304, 1379, 1452, 1527, 1570, 1676, 1750],
]
function getRate(weight) {
for (let i = 1; i < schMatrix[0].length; i++) {
const currWeight = schMatrix[0][i]
if (weight > currWeight) {
// as soon as currWeight is bigger than weight, return
return schMatrix[1][i-1]
}
}
}