JavaScript中如何获取对象指定键而非对应值,无需额外创建冗余对象
解决方案
- 获取对象所有键:可直接使用JS原生
Object.keys()方法,传入目标对象后会返回由所有一级键名组成的数组,可直接调用数组的sort()方法完成键排序,刚好匹配你的需求:
var CapitalLetters = { "A" : [ "M40,60 v-20 l10,-20 l10,20 v20 v-15 h-20 ", ] } // 得到键名数组:['A'] const keys = Object.keys(CapitalLetters) // 键排序,默认按字符编码顺序排列,支持自定义排序规则 const sortedKeys = keys.sort()
- 判断指定键是否存在:无需额外遍历,直接调用
hasOwnProperty()方法即可得到布尔类型的判断结果:
// 检查'A'是否为CapitalLetters的键,返回true const isExist = CapitalLetters.hasOwnProperty('A')
- 结合HTML检测的使用示例:你可以直接读取input的value值,再判断该值是否为对象的键:
const inputValue = document.getElementById('fname').value if (CapitalLetters.hasOwnProperty(inputValue)) { // 匹配到对应键后的业务逻辑 console.log('匹配到的键名:', inputValue) }
- 你示例中的if判断存在逻辑错误:原写法
answers2 === CapitalLetters['A'] || CapitalLetters['S']并不会把answers2和后面所有值比较,而是会直接判断CapitalLetters['S']是否为真值,优化写法如下:
// 把所有要匹配的项存入数组,调用includes方法判断 const matchList = [CapitalLetters['A'], CapitalLetters['S'], LowerLetters['d'], NumberLetters[4]] if (matchList.includes(answers2)) { // 匹配成功后的逻辑 }
以上所有方案均为JS原生语法支持,不需要额外创建大量自定义对象,也无需编写冗余代码。
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

