首页 > 解决方案 > 在 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键是什么,我的所以返回中没有键的值没有什么。2112scoreResults

基本上我正在尝试解决这个算法:https ://www.codewars.com/kata/5270d0d18625160ada0000e4/train/javascript

如果您需要进一步说明,请告诉我

标签: javascriptalgorithmobject

解决方案


这是您的解决方案。您可以使用 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;
}


推荐阅读