javascript 将数字与对象键进行比较并获取最小的值

标签 javascript arrays object ecmascript-6

假设我们有:

const list = {
  1: "a",
  10: "b",
  20: "c",
  30: "d",
  40: "e"
};

const value = 15;

如何有效地将值与对象键进行比较并获取相应较小范围的值?在此示例中,预期答案为 b,因为 15 介于 10 和 20 之间。

我想走这条路:

for(var i=0; i < keys.length; i++){
    const item = parseInt(keys[i],10);
    if (item == keys[i]) {
      return keys[i];
    }
  }

但是效率不高...

最佳答案

您可以使用Object.keys它将获取新数组中的所有对象键,并在.some中(按照@Keith的建议)停止循环( return true),当当前值大于value时,结果将存储在previous var

const list = {
  1: "a",
  10: "b",
  20: "c",
  30: "d",
  40: "e"
};

const value = 15;
let previous = 0;

Object.keys(list).some(k => {
  if (k > value) {
    return true;
  } 
  previous = k
});

console.log(list[previous]);

关于javascript 将数字与对象键进行比较并获取最小的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53175986/

相关文章:

javascript - 检查 Javascript 数组中是否存在属性值为 'x' 的对象

javascript - 在 <audio> 元素上设置 currentTime 会使 Firefox 崩溃

javascript - 如何使用 popmotion pure 从关键帧旋转、平移和缩放矩形?

Javascript anchor 目标scrollTo top不起作用

javascript - 如何使用 JS 将内容附加到两个不同的 Div?

javascript - Html 和 JavaScript : How to return user input

c++ - 在 std::array 上使用 std::get 会提供更好的性能吗?

javascript - 根据另一个数组对对象数组进行排序

java - 使用条件java删除重复的列表对象

Java equal方法解释如下代码