【发布时间】:2018-10-15 13:57:52
【问题描述】:
我有一个这样的嵌套对象 -
finalObj = {
"1" : {
"1" : 0.6,
"2" : 0.3,
"3" : 0.1,
"score" : "a,b"
},
"3" : {
"2" : 0.4,
"3" : 0.4,
"4" : 0.2,
"score" : "c,d"
},
"4" : {
"1" : 0.6,
"4" : 0.4,
"score" : "e,f"
}
}
var newObj = {
"1": [0.6 * (a / b) + 0.6 * (e / f)] / (0.6 + 0.6),
"2": [0.3 * (a / b) + 0.4 * (c / d)] / (0.6 + 0.4),
"3": [0.1 * (a / b) + 0.4 * (c / d)] / (0.1 + 0.4),
"4": [0.2 * (c / d) + 0.4 * (e / f)] / (0.2 + 0.4)
}
var obj = {};
for (let key in finalObj) {
console.log(key) // "1" , "3" , "4"
for (let bey in finalObj[key]) {
if (bey !== "score") {
var x = finalObj[key]["score"].split(",")
if (obj.hasOwnProperty(bey)) {
console.log(x[0] + " if " + x[1])
obj[bey] += finalObj[key][bey] * x[0] / x[1]
}
else {
console.log(x[0] + " else " + x[1])
obj[bey] = finalObj[key][bey] * x[0] / x[1]
}
}
}
}
其中外部对象的键引用"question_id",内部嵌套对象的键引用"skills_id"及其权重,"scores"在一个用逗号分隔的字符串中有两个值。示例 -
"1", "3", "4" 是 question_ids。
问题 id "1" : "1", "2", "3" 是指该问题的技能 id。“分数”有“a(获得的分数),b(总分)”
我想返回另一个具有技能 id 的对象及其标准化分数 - newObj
//其中“1”、“2”、“3”、“4”都是用上面的公式归一化的技能ID。
//我需要使用多少个循环来实现这一点?这是 // 将数据放入嵌套对象的正确方法吗?
// 我现在正在尝试这样的事情 - // 请帮忙 - //我得到了输出但是代码看起来很奇怪!
【问题讨论】:
-
请同时添加结果。
-
对于 a,b = 45,50 c,d = 35,40 e,f = 5,10 obj = {"1":0.8400000000000001,"2":0.62,"3":0.43999999999999995 ,"4":0.375}
-
你只有左边的总和,但数字没有除以
0.6 + 0.6的总和作为第一个值。第一个结果应该是0.7 -
是的,没错。处理。谢谢
标签: javascript node.js algorithm