如何检测JavaScript对象是否存在至少一个id外的非undefined属性?
检测对象是否存在id外的非undefined属性的方案
以下几个实用方案可以满足需求,均采用短路求值逻辑(找到第一个符合条件的属性就停止遍历),适配你提到的「多数情况下只有id有值」的场景:
使用
Object.keys结合some方法
先获取对象的所有自有键名,过滤掉id后检查是否存在值不为undefined的属性:function hasNonIdProperties(obj) { return Object.keys(obj).some(key => key !== 'id' && obj[key] !== undefined); }使用
Object.entries结合some方法
直接获取键值对数组,解构后判断,写法更直观:function hasNonIdProperties(obj) { return Object.entries(obj).some(([key, value]) => key !== 'id' && value !== undefined); }使用
for...in循环(含原型属性过滤)
如果需要排除对象原型链上的属性,可通过hasOwnProperty做额外校验:function hasNonIdProperties(obj) { for (const key in obj) { if (obj.hasOwnProperty(key) && key !== 'id' && obj[key] !== undefined) { return true; } } return false; }
补充说明
以上方法都能高效完成检测:一旦找到第一个非id且值不为undefined的属性,就会立即返回结果,不会遍历全部属性,在多数场景下性能最优。
内容的提问来源于stack exchange,提问作者Fred Hors
相关产品推荐
相关产品推荐

