在javascript对象中查找键并返回结果
我有下面的算法,我在数组中传递,我计算数组中每个数字的数量。然后我需要根据每个数字在数组中出现的次数返回一个结果。结果没有改变,所以我创建了一个查找表,可以在下面我的在javascript对象中查找键并返回结果,javascript,algorithm,object,Javascript,Algorithm,Object,我有下面的算法,我在数组中传递,我计算数组中每个数字的数量。然后我需要根据每个数字在数组中出现的次数返回一个结果。结果没有改变,所以我创建了一个查找表,可以在下面我的scoreResults对象中找到: const scoreResults = { 1: { 1:100 3:1000 }, 2: { 3: 200 }, 3: { 3:300 }, 4: { 3:400
scoreResults
对象中找到:
const scoreResults = {
1: {
1:100
3:1000
},
2: {
3: 200
},
3: {
3:300
},
4: {
3:400
},
5: {
3:500
1:50
},
6: {
3:600
},
}
// example dice [2,3,6,6,6]
function score(dice) {
[...]
return getResult(mapping); // mapping = {2:1, 3:1, 6:3}
}
function getResult(object){
for (const key in object){
[CODE I CANNOT FIGURE OUT]
}
}
对于我无法理解的部分,我希望执行以下操作:
现在我想检查映射
对象中的每个键。例如,让我们在我的映射
对象中取键值对6:3
。如果键6
在我的scoreResults
对象(它是什么)中,请检查映射对象(它是3)中键6的值
,如果是3,则检查这里是否有键3,在6键内:6:{3:600},
返回600(值),如果不是,则不返回任何内容
另一个例子:
对于mymapping
对象中的键值对2:1
,我想查看key2
是否在myscoreResults
对象(它是什么)中,检查我的映射对象中key2
的值是什么,在myscoreResults中的键2
的值中没有1
,因此不返回任何内容
基本上,我正在尝试解决这个算法:
如果您需要进一步澄清,请告诉我这是您的解决方案。可以使用object.keys从对象的键创建数组。就像我在这里做的一样,你可以使用一个参数来代替我预先定义的映射对象
const scoreResults={
1: {
1:100,
3:1000
},
2: {
3: 200
},
3: {
3:300
},
4: {
3:400
},
5: {
3:500,
1:50
},
6: {
3:600
},
}
设映射={2:1,3:1,6:3}
函数getResult(){
让结果;
常量键=Object.keys(映射);
key.map(key=>{
if(评分结果[关键点][关键点]){
结果=得分结果[关键点][关键点];
}
})
返回结果;
}
要使其适用于任何分数结果和骰子数,您可以执行以下操作:
function getResult(mapping) {
let res = 0
for (let key of Object.keys(mapping)) {
if (!scoreResults[key])
continue
let count = mapping[key]
let test = count
while (count > 0 && test > 0) {
if (scoreResults[key][test]) {
let amount = Math.floor(count / test)
res += amount * scoreResults[key][test]
count -= amount * test
test = count
} else {
test--
}
}
}
return res
}
您刚才描述了代码必须执行的操作。试着在句子后面写下代码<代码>如果关键字6在我的scoreResults对象中
-->如果(scoreResults[6])
例如,您可以接受答案吗。这些答案显然可以解决这个问题。