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