在JavaScript对象中查找哪个键值对等于X?

在JavaScript对象中查找哪个键值对等于X?,javascript,Javascript,我正在对数据库进行排序,但实际上只是处理一个javascript对象。在这个对象中,我有变量,我需要找到最低的变量。我已经这样做了,但要这样做,我必须找到值,它是数值,而不是该值等于的键值对的名称,我如何才能找到哪个值对最低的结果负责 以下是数据库对象: { cave: cave, environment: { activity: activity, recovery:

我正在对数据库进行排序,但实际上只是处理一个javascript对象。在这个对象中,我有变量,我需要找到最低的变量。我已经这样做了,但要这样做,我必须找到值,它是数值,而不是该值等于的键值对的名称,我如何才能找到哪个值对最低的结果负责

以下是数据库对象:

        {
            cave: cave,
            environment: {
                activity: activity,
                recovery: recovery,
                psychology: psychology
            },
            variable: {
                training: training,
                mobility: mobility,
                sleep: sleep,
                nutrition: nutrition,
                stress: stress,
                motivation: motivation
            },
            date: moment().format('ll'),
            user: Meteor.user().username
        }
因此,我将进入这个过程,并使用以下方法找到所有变量中的最低值:

Math.min(
         findVariable(0, 'training'),
         findVariable(0, 'mobility'),
         findVariable(0, 'sleep'),
         findVariable(0, 'nutrition'),
         findVariable(0, 'stress'),
         findVariable(0, 'motivation')
        )
可发现的变量是:

findVariable = function(dayOffset, findValue){
    var log = dailyLog.find({user: Meteor.user().username, date: findDate(dayOffset)}).fetch()[0];

    return log.variable[findValue];

};

因此,我找到了每个变量的值,它是一个整数值,但我不想显示数字我想显示变量名如何获得负责最小值的变量名?

一种方法是覆盖
变量:

var variables = {
  training: 1,
  mobility: 4,
  sleep: 6,
  stress: 5
};

var lowestVariable = Object.keys(variables).reduce(function (lowest, variable) {
  if (variables[variable] < variables[lowest]) {
    return variable;
  } else {
    return lowest;
  }
});

// training

它是一种魅力,将其逆转为最高变量,效果完美。但我还是很困惑!reduce函数是如何工作的,它是否遍历每个变量,每次都返回最低的变量,如果不是较小的,则返回原始变量?非常感谢,尽管男人工作得很完美!
findLowest = function (dayOffset) {
  var log = dailyLog.find({user: Meteor.user().username, date: findDate(dayOffset)}).fetch()[0];

  return Object.keys(log.variable).reduce(function (lowest, variable) {
      if (log.variables[variable] < log.variables[lowest]) {
        return variable;
      } else {
        return lowest;
      }
  });
}