【问题标题】:How do I query a Key-Value object in Java [duplicate]如何使用列表搜索对象并返回其键? [复制]
【发布时间】:2021-07-23 05:30:31
【问题描述】:

提前感谢您的帮助....如果我有代码列表,我需要在 secretCodes 对象中搜索这些代码并返回相关的秘密(名称)以进行进一步处理。

"Codes": ["4444", "5555"]

"secretCodes": [
{
"secret": "John",
"value": "4444"
},
{
"secret": "Paul",
"value": "0001"
},
{
"secret": "George",
"value": "0002"
},
{
"secret": "Ringo",
"value": "5555"
},
{
"secret": "Pete",
"value": "0008"
}
]

【问题讨论】:

  • 为什么secretCodes 是一个数组而不是一个从值映射到秘密的对象?
  • 点赞{"4444": "John", "0001": "Paul", ...}

标签: javascript arrays json list


【解决方案1】:

如果您想返回与代码数组中的值对应的秘密名称,您可以这样做:

let secretCodes = [
  { secret: "John", value: "4444" },
  { secret: "Paul", value: "0001" },
  { secret: "George", value: "0002" },
  { secret: "Ringo", value: "5555" },
  { secret: "Pete", value: "0008" },
];

function getSecretName(codes) {
  let matchingValues = secretCodes.filter(obj => codes.includes(obj.value));
  return matchingValues.map(value => value.secret);
}

console.log(getSecretName(["4444", "5555"]));

// returns ["John", "Ringo"]

【讨论】:

    【解决方案2】:

    遍历您的项目并将它们存储在一个变量中。

    const secretObjects = [];
    
    secretCodes.forEach(obj => {
      if (Codes.includes(obj.value)) {
        secretObjects.push(obj)
      }
    })
    

    【讨论】:

      【解决方案3】:

      像这样管理数据的适当方法是使用数组原型函数。

      • 当您想要一个包含数据子集的数组时,filter 是最好的选择
      • map 是您想要将每个元素转换为新元素时的最佳选择 元素。
      • some 最适合在您想知道数组中的任何元素是否与您要查找的元素匹配时使用

      Codes = ["4444", "5555"]
      
      secretCodes = [
      {"secret": "John", "value": "4444"},
      {"secret": "Paul", "value": "0001"},
      {"secret": "George", "value": "0002"},
      {"secret": "Ringo", "value": "5555"},
      {"secret": "Pete", "value": "0008"}
      ]
      
      const filteredCodes = secretCodes.filter(code => Codes.some( el => el === code.value))
      console.log(filteredCodes)
      
      const secretNames = filteredCodes.map(code => code.secret)
      console.log(secretNames)

      【讨论】:

        【解决方案4】:

        secretCodescodes 转换为变量后,这将起作用:

        secretCodes.forEach(x =>{
                codes.forEach(y =>{
                    if (x['value'] === y){
                        console.log(x['secret'])
                    }
                })
            })
        

        【讨论】:

          猜你喜欢
          • 2021-09-16
          • 1970-01-01
          • 1970-01-01
          • 2013-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-25
          • 1970-01-01
          相关资源
          最近更新 更多