gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:05:41 25 4
gpt4 key购买 nike

我正在对数据库进行排序,但本质上只是使用 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 是这样的:

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

return log.variable[findValue];

};

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

最佳答案

实现此目的的一种方法是 reduce在你的变量上:

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

这样您就不需要为每个变量名称执行 dailyLog.find ,而是只需查看日志一次,然后减少变量属性:

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;
}
});
}

关于javascript - 查找 JavaScript 对象中哪个键值对等于 X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com