javascript - 在 javascript 对象中查找键并返回结果
问题描述
我有以下算法,我传入一个数组,我计算每个数字中有多少在数组中。然后我需要根据每个数字在数组中出现的次数返回一个结果。结果没有改变,所以我创建了一个查找表,可以在下面的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]
}
}
对于我无法弄清楚的部分,我想做以下事情:
我现在想检查mapping
对象中的每个键。6:3
例如,让我们在我的mapping
对象中获取键值对。如果键6
在我的scoreResults
对象(它是)中,请检查value
我的映射对象(即 3)中的键 6,如果它是 3,然后检查此处是否有键 3,在 6 键中:6: {3:600},
如果返回 600(值)不,什么也不回报。
2:1
另一个例子:对于我的对象中的键值对mapping
我想看看键2
是否在我的scoreResults
对象中(它是)检查我的映射对象中的value
键是什么,我的所以返回中没有键的值没有什么。2
1
1
2
scoreResults
基本上我正在尝试解决这个算法:https ://www.codewars.com/kata/5270d0d18625160ada0000e4/train/javascript
如果您需要进一步说明,请告诉我
解决方案
这是您的解决方案。您可以使用 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
},
}
let mapping = {2:1, 3:1, 6:3}
function getResult(){
let result;
const keys = Object.keys(mapping);
keys.map(key => {
if(scoreResults[key][key]) {
result = scoreResults[key][key];
}
})
return result;
}