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

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;

}

有没有更好的方法来做同样的事情?


www说
浏览 132回答 2
2回答

慕码人8056858

您可以按降序对值进行排序,然后使用查找小于数字的第一个值,如果找到该值,则返回该值,否则返回最后一个值let mapper = [[3,1],[4,1],[10,2],[12,1],[13,2]].sort((a,b)=>b[0]-a[0])let myFunction = (number) => {&nbsp; let value = mapper.find((v, i) => {&nbsp; &nbsp; if (v[0] < number) {&nbsp; &nbsp; &nbsp; return v[1]&nbsp; &nbsp; }&nbsp; })&nbsp; return value&nbsp; || mapper[0]}console.log(myFunction(10))console.log(myFunction(9))console.log(myFunction(2))

慕森王

您可以直接取数字并递减该值,直到它达到零。function fn(number) {&nbsp; &nbsp;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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript