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 回答
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
慕码人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))
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
慕森王
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));
添加回答
举报
0/150
提交
取消