【发布时间】:2021-07-23 09:00:59
【问题描述】:
我有一个范围对象,另一个是 price_values 数组,现在我想为 price_values 数组的每个值距范围对象最近的范围。我已经尝试了以下解决方案,但它没有给我正确的范围。
range = {
0: '25-500',
1: '1500-2500',
2: '5000-10000'
}
let price_values = [5, 100, 1500, 7000, 15000]
我厌倦了以下解决方案
let nearestPriceRangeArr = [];
let rangeLength = Object.keys(range).length;
Object.keys(range).forEach(key => {
price_values.forEach((price, qKey) => {
let rangeArr = key.split("-");
let fromRange = parseInt(rangeArr[0]);
let toRange = parseInt(rangeArr[1]);
if(price <= fromRange) {
if(x == 0) {
nearestPriceRangeArr[price] = key;
}
} else {
if (price >= fromRange && price <= toRange) {
nearestPriceRangeArr[price] = key;
} else {
if(price >= toRange) {
let ab = (x == rangeLength - 1) ? key : key;
nearestPriceRangeArr[price] = ab;
}
}
}
x++;
});
});
预期输出
nearestPriceRangeArr[5] = '25-500';
nearestPriceRangeArr[100] = '25-500';
nearestPriceRangeArr[1500] = '1500-2500';
nearestPriceRangeArr[7000] = '5000-10000';
nearestPriceRangeArr[15000] = '5000-10000';
【问题讨论】:
-
请添加想要的结果。
-
您必须将范围存储为字符串吗?使用
min和max数字存储对象无需任何字符串解析。 -
@NinaScholz 添加了预期输出
-
3000、3750或4000等值呢? -
它们将落入 5000-10000 范围内
标签: javascript typescript ecmascript-6 range