我有一组数字&我的要求是找到与特定变量集/数字对象相同或更接近的数字
var person = {
A:107,
B:112,
C:117,
D:127,
E:132,
F:140,
G:117,
H:127,
I:132,
J:132,
K:140,
L:147,
M:117,
N:127,
O:132
};
我需要为vaiable x找到最接近的数字 eg1-如果
x = 116;
那么从数字设置到x的最接近的数字是117,它在C,G,M处重复所以我需要用javascript以编程方式找出C,G,M
EG2 -
x= 127
然后相同的数字到数字集合重复在D,H,N所以我需要用javascript以编程方式找出D,H,N
感谢您的帮助
尝试了代码
function getNextHighest(obj, value) {
var diff = Infinity;
return Object.keys(obj).reduce(function(acc, key) {
var d = obj[key] - value;
if (d > 0 && d < diff) {
diff = d;
acc = [key];
} else if (d == diff) {
acc.push(key)
}
return acc;
}, [])
}
var person = {A:107,B:112,C:117,D:127,E:132,F:140,G:117,
H:127,I:132,J:132,K:140,L:147,M:117,N:127,O:132
};
document.write(getNextHighest(person, 116));
document.write('<br>' + getNextHighest(person, 127));
但问题是这个代码我只得到次高的数字,它忽略了相同的数字 例如 - 在127的情况下,结果应为D,H,N,但程序输出为E,I,J,O 在此先感谢您的帮助
答案 0 :(得分:0)
您只需更改行
即可if (d > 0 && d < diff) {
到
if (d >= 0 && d < diff) {
所以它也包括相同的数字。