【发布时间】:2017-08-30 03:47:32
【问题描述】:
我无法让我的哈希正确地保持我正在寻找的值。
一些背景来澄清这里的价值观。
我正在用 React 创建一个锻炼应用程序。最后一个功能是创建一个搜索函数来返回用户的最大提升。
该测试适用于卧推。值如下所示。
405 435 285 225 135 185
无论我如何构造哈希,它都会返回 {Bench Press: 185},我希望它对数据进行排序,并且只有在新值大于旧值时才更改值。
const completedExercises = {};
mergedSets.forEach(set => {
if (set) {
let exercise = exercises[set.exercise_id]
let name = exercise.exercise_name
if (exercise.ex_type === 'lift') {
if (completedExercises[name] < (set.weight_lifted)) {
completedExercises[name] = set.weight_lifted
} else {
completedExercises[name] = set.weight_lifted
}
}
}
})
第一个条件是检查是否设置了用户在他们的日志中没有存储锻炼的情况。
第二个是只做举重类型的运动,因为有氧运动没有举重的价值。
如果条件正常工作并且所有数据都通过,我可以在调试器中看到这两个。
我有一个练习哈希,一组有一个练习 ID,这是我得到名字的地方。该组存储举起的重量。
我对 JS 比较陌生,所以我不确定这是否与使用 forEach 有关,同时我将尝试使用 for 循环。任何帮助,将不胜感激。无论顺序如何,这始终将哈希设置为等于过去的最后一个值。
【问题讨论】:
-
为什么内部的
if和else分支做同样的事情? -
而结果同样被重构为一个for循环。
-
我相信你真正需要的是翻转那个符号,正如@nnnnnn 提到你的 if 和 else 语句做同样的事情
-
Javascript (ECMAScript) 没有“哈希对象”,它有对象。您应该提供示例输入和输出,exercises 的价值是什么?
-
@AmrAly facepalm....简单修复,else 条件是设置值,无论我想要什么条件...简单修复,谢谢!
标签: javascript reactjs hash