如何从一组特定的数字中找到相同或最接近的数字:javascript

时间:2016-03-09 09:12:24

标签: javascript

我有一组数字&我的要求是找到与特定变量集/数字对象相同或更接近的数字

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 在此先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您只需更改行

即可
if (d > 0 && d < diff) {

if (d >= 0 && d < diff) {

所以它也包括相同的数字。