我希望能够键入“ 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”而不是未定义。
答案 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>