JavaScript中如何判断对象是否存在指定两个key中的任意一个
实现方案
直接结合数组的some()方法和你已经知道的in操作符就能完成需求,some()会遍历数组元素执行判断逻辑,只要有一个元素返回true就会终止遍历直接返回true,完全匹配「任意一个指定key存在即判定为真」的需求。
通用封装函数如下:
// 入参:待检测对象、指定key数组 // 返回值:存在任意一个key返回true,否则返回false const hasAnyKey = (targetObj, keyList) => keyList.some(key => key in targetObj);
用你给出的测试场景运行验证:
const keys = ['foo', 'bar']; const obj = {"foo": "value"}; const obj1 = {"key": "value"}; console.log(hasAnyKey(obj, keys)); // true console.log(hasAnyKey(obj1, keys)); // false
补充说明:如果你只需要判断对象自身拥有的key,不需要统计原型链上继承的key,把判断逻辑里的key in targetObj替换为Object.prototype.hasOwnProperty.call(targetObj, key)即可,避免对象自身重写了hasOwnProperty方法导致的判断异常。
内容的提问来源于stack exchange,提问作者xMayank
相关产品推荐
相关产品推荐

