已知对象存在指定键,如何判断是否有其他键包含该键名?
当然可以判断!
你可以通过简单的逻辑快速确认是否存在其他包含"hello"的键,完全不需要知晓具体键名:
核心思路是:先获取对象的所有键,再检查是否存在除了已知的hello键之外、键名包含"hello"的项。
高效实现方案
使用Object.keys()获取对象的所有可枚举键,搭配Array.some()方法(它会在找到第一个符合条件的元素时就停止遍历,性能更优):
var obj = { hello: 1, helloWorld: 2 }; // 检查是否存在除"hello"外包含"hello"的键 const hasOtherHelloRelatedKeys = Object.keys(obj).some(key => { return key !== 'hello' && key.includes('hello'); }); console.log(hasOtherHelloRelatedKeys); // 输出: true
兼容旧浏览器的版本
如果需要兼容不支持String.includes()的旧环境,可以用String.indexOf()替代:
const hasOtherHelloRelatedKeys = Object.keys(obj).some(key => { return key !== 'hello' && key.indexOf('hello') !== -1; });
补充说明
Object.keys()只会返回对象自身的可枚举属性键,如果你的对象有继承的可枚举键需要考虑,可以改用Object.getOwnPropertyNames()或者Reflect.ownKeys()(根据实际需求选择)。some()方法的优势是短路求值,一旦找到符合条件的键就立即返回结果,不需要遍历全部键,比先过滤再判断长度的方式更高效。
内容的提问来源于stack exchange,提问作者seventeen
相关产品推荐
相关产品推荐

