如何用单个JavaScript字典根据动物值匹配对应类型键?
解决方案
首先你之前的代码有个核心问题:JavaScript对象里重复的键会被后面的覆盖,比如你写两个"fish"键,最后对象里只会保留最后那个"fish": "clownfish",前面的会直接丢失,这也是你逻辑不对的根源。
要实现「用一个字典,根据输入的动物值找对应的类型」,得调整字典的结构:把每个动物类型作为键,对应的值改成该类型下所有动物的数组,然后遍历字典检查输入值是否在某个类型的数组里即可。
完整实现代码
// 单字典:键是动物类型,值是对应类型的动物数组 var animalTypes = { "fish": ["clams", "clownfish"], "reptile": ["alligator", "snake"] }; var userInput = prompt("Enter an animal"); // 标记是否找到匹配的类型 var foundType = null; // 遍历字典的所有类型键 for (var type in animalTypes) { // 检查输入值是否在当前类型的动物数组里 if (animalTypes[type].includes(userInput)) { foundType = type; break; // 找到后直接退出循环 } } // 根据结果弹出提示 if (foundType) { alert(`its a ${foundType}`); } else { alert("Key not found"); }
说明
- 字典结构改成数组后,同一个类型下可以存多个动物值,不会出现覆盖问题
- 用
for...in遍历字典的键,配合includes()方法检查输入值是否属于该类型 - 找到匹配类型后立即退出循环,提升效率
内容的提问来源于stack exchange,提问作者theMonster1010
相关产品推荐
相关产品推荐

