首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >总是想知道怎么做这样的事..。是否有一种简单的方法可以找到一个值是否存在于一个对象中的两个值之间?

总是想知道怎么做这样的事..。是否有一种简单的方法可以找到一个值是否存在于一个对象中的两个值之间?
EN

Stack Overflow用户
提问于 2017-04-11 20:40:05
回答 2查看 28关注 0票数 0

我一直在学习范围以及Object.keys和地图,但我想知道这是否可能:

代码语言:javascript
复制
{
  "zero": 0,
  "ten": 10,
  "twenty": 20,
  "thirty": 30
}

给定一个介于0到30之间的数字,是否有一种方法可以确定它之间的两个数字?

例如,

代码语言:javascript
复制
Object.keys(range).map((v) => {
  if (15 > range[v] && 6 < range[v+1]) {
    // print out lower and upper 
  }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-11 20:52:20

在范围内使用非数组对象不是一个好主意。

  • 属性名称不会增加对象的意义。
  • 迭代属性名称的顺序是a complex issue,最好不要依赖。

最好是使用数组,然后使用findfindIndex方法:

代码语言:javascript
复制
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)));

票数 2
EN

Stack Overflow用户

发布于 2017-04-11 20:51:08

您可以检查间隔并打印密钥。

代码语言:javascript
复制
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));

对象属性间隔的单一值的不同方法

代码语言:javascript
复制
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));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43355813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档