如何使用列表搜索对象并返回其键?

时间:2021-04-29 19:59:38

标签: javascript arrays json list

提前感谢您的帮助.... 如果我有代码列表,我需要在 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"
}
]

4 个答案:

答案 0 :(得分: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"]

答案 1 :(得分:1)

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

const secretObjects = [];

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

  • 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)