gpt4 book ai didi

javascript - 从嵌套对象属性中获取排除特定值的最大值

转载 作者:行者123 更新时间:2023-11-30 10:05:39 28 4
gpt4 key购买 nike

我在这里必须做的事情非常具体,恐怕迭代逻辑超出了我的范围。好的...我有一个看起来像这样的对象:

var answers = {
cat1: {
q1: {
"question": "Why?",
"answer": "No",
"points": 6
},
q2: {
"question": "Why oh why?",
"answer": "50%",
"points": 15
},
q3: {
"question": "Is it true?",
"answer": "Maybe",
"points": 9
}
},
cat2: {
q1: {
"question": "Hello?",
"answer": "Hello",
"points": 0
},
q2: {
"question": "Why me?",
"answer": "Because",
"points": 9
},
q3: {
"question": "Is it true?",
"answer": "Maybe",
"points": 0
}
},
cat3: {
q1: {
"question": "why not?",
"answer": "I don't know",
"points": 15
},
q2: {
"question": "What?",
"answer": "That",
"points": 9
},
q3: {
"question": "Is it real?",
"answer": "Nope",
"points": 6
}
}
}

对于每个“类别”,我不知道其属性名称,我需要找到最高点,排除正好是 15 的点(也就是说,15 是一个特例,所以对于类别中的“q(n)”嵌套对象,我认为 9 是 0、9 和 15 中最高的。

我想把这些高分中的每一个都加起来,可能是通过 +=ing 一个“总”变量。

我觉得好像我应该以某种方式使用 underscore.js 简化对象,这样我只剩下 q1: 6 等,删除值为 15 的属性,然后使用下划线的 _.max() 函数在将这些高分加在一起之前为每个 q(n) 取最高分值。

在示例中,这将是 9 加 9 加 9 (27)。

感谢您的帮助。

最佳答案

您应该使用一个简单的 for 循环遍历您的 Object 的键,然后您可以总结结果。

var maxs = {},
tot = 0;

for (var i in answers) {
maxs[i] = 0;
for (var j in answers[i]) {
if (answers[i][j].points != 15) maxs[i] = Math.max(maxs[i], answers[i][j].points);
else delete answers[i][j];
// ^ delete the question if the score is 15
}
tot += maxs[i];
}

结果会是这样的:

maxs
> {
cat1: 9,
cat2: 9,
cat3: 9
}

tot
> 27

关于javascript - 从嵌套对象属性中获取排除特定值的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330936/

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