为了账号安全,请及时绑定邮箱和手机立即绑定

使用 JS 从对象或地图中立即找到较小的价值

使用 JS 从对象或地图中立即找到较小的价值

www说 2021-10-21 11:06:16
object -> let error = {3:1, 4:1, 10:2, 12:1, 13:2} or {3:1, 4:1, 12:1, 13:2}map ->  let map = new Map([[3,1],[4,1],[10,2],[12,1],[13,2]]}如果我的数字是 10 意味着我需要得到 4 的值,即立即更少,如果没有更少的值,那么我需要返回最大值。现在,我将减少该值并检查地图中是否存在并返回该值。目前,我正在使用一个对象。如果传递的数字存在或不存在,则需要立即查找较小的值。我的 obj 包含 1, 3, 7, 10 是我的键, 5 是传递的数字,我需要立即找到较小的值 3 < 5 。如果值通过 7 也 3<7。它不是基于索引。它基于密钥。myFunction = (number) => {    let index;     for(int i = number; i>=number ; i--){      if(error[i] != undefined){          index = i;          break;      }    }return index;}有没有更好的方法来做同样的事情?
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您可以按降序对值进行排序,然后使用查找小于数字的第一个值,如果找到该值,则返回该值,否则返回最后一个值


let mapper = [[3,1],[4,1],[10,2],[12,1],[13,2]].sort((a,b)=>b[0]-a[0])


let myFunction = (number) => {

  let value = mapper.find((v, i) => {

    if (v[0] < number) {

      return v[1]

    }

  })

  return value  || mapper[0]

}


console.log(myFunction(10))

console.log(myFunction(9))

console.log(myFunction(2))


查看完整回答
反对 回复 2021-10-21
?
慕森王

TA贡献1777条经验 获得超3个赞

您可以直接取数字并递减该值,直到它达到零。


function fn(number) {

   while (number--) if (number in error) return number;

}


var error = { 3: 1, 4: 1, 10: 2, 12: 1, 13: 2 };


console.log(fn(9));

console.log(fn(10));


查看完整回答
反对 回复 2021-10-21
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信