我希望能够键入“ 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”而不是未定义。
最佳答案
看来您想访问对象中的值。通过其部分名称。
使用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"))