我一直在学习范围以及Object.keys和地图,但我想知道这是否可能:
{
"zero": 0,
"ten": 10,
"twenty": 20,
"thirty": 30
}给定一个介于0到30之间的数字,是否有一种方法可以确定它之间的两个数字?
例如,
Object.keys(range).map((v) => {
if (15 > range[v] && 6 < range[v+1]) {
// print out lower and upper
}
});发布于 2017-04-11 20:52:20
在范围内使用非数组对象不是一个好主意。
最好是使用数组,然后使用find或findIndex方法:
function getInterval(range, n) {
var i = range.findIndex( i => n < i );
if (i < 0) i = range.length;
// return an array with the two values that "bound" the value:
return [range[i-1], range[i]];
}
var range = [0, 10, 20, 30];
// Examples: note that one value can be undefined, when outside of the range
console.log('-2: ' + JSON.stringify(getInterval(range, -2)));
console.log('6: ' + JSON.stringify(getInterval(range, 6)));
console.log('15: ' + JSON.stringify(getInterval(range, 15)));
console.log('31: ' + JSON.stringify(getInterval(range, 31)));
发布于 2017-04-11 20:51:08
您可以检查间隔并打印密钥。
var range = { zero: 0, ten: 10, twenty: 20, thirty: 30 },
interval = [15, 25];
Object.keys(range).forEach(v => interval[0] < range[v] && range[v] < interval[1] && console.log(v));
对象属性间隔的单一值的不同方法
var range = { zero: 0, ten: 10, twenty: 20, thirty: 30 },
value = 15;
Object.
keys(range).
sort((a, b) => range[a] - range[b]).
forEach((k, i, kk) => (range[kk[i - 1]] <= value && value <= range[k] || range[k] <= value && value <= range[kk[ i + 1]]) && console.log(k));
https://stackoverflow.com/questions/43355813
复制相似问题