您如何将不完整的字符串索引到JSON键?

时间:2019-05-15 13:09:45

标签: javascript arrays json javascript-objects

我希望能够键入“ Hammerhead”来调用“ Hammerhead Shark”对象,而不使用其全名。这可能吗?如果可以,怎么办?

我尝试使用array.indexOf(string),尽管它似乎并没有帮助,因为它需要完全匹配,例如键入“ Hammerhead Shark”。

JS:

const JSON = require('animals.json');
var animals = Object.keys(JSON);

if (animals.indexOf("Hammerhead")) {
console.log(JSON["Hammerhead"].name);
}

JSON:

{
  "Hammerhead Shark": {
  "name": "Shark",
  "age": "300"
  },
  "Duck": {
  "name": "Duck",
  "age": "1000"
  }
}

我希望输出是“ Shark”而不是未定义。

2 个答案:

答案 0 :(得分:1)

似乎您想访问对象中的值。用它的部分名称。

  • 使用Object.entries()
  • 获取对象的条目
  • 找到includes()给定部分密钥的密钥。
  • 返回找到的条目的第二个元素。

const obj = { "Hammerhead Shark": { "name": "Shark", "age": "300" }, "Duck": { "name": "Duck", "age": "1000" } }

function getValueByPartialKey(obj,key){
  return (Object.entries(obj).find(([k,v]) => k.includes(key)) || [])[1]
}

console.log(getValueByPartialKey(obj,"Hammerhead"))

答案 1 :(得分:0)

您可以使用string.includes(word)返回与您要搜索的字符串匹配的名称,还可以使用Array.filter遍历值,并返回所需的结果。< / p>