如何将JavaScript中判断值为object的逻辑改写为等效Python代码
问题解答
你需要根据实际业务场景选择判断逻辑,核心差异是你要对齐JS typeof f === 'object'的原生行为,还是仅判断是否为普通键值对对象:
场景1:仅判断是否为字典(和你给出的示例场景匹配)
如果你的业务逻辑里,只有类似{'fields': [...]}这种键值对结构才符合要求,直接用:
if isinstance(f, dict):
这个判断仅会在f是字典类型时返回真,完全匹配你给出的示例场景。
场景2:完全对齐JS typeof f === 'object'的原生行为
JS的typeof f === 'object'有几个特殊规则:
- 对普通对象、数组、日期、正则等引用类型返回真
- 对null返回真(JS历史遗留坑)
- 对函数、字符串、数字、布尔、undefined等返回假
Python中对齐该行为的判断代码如下:
# 包含None的版本(完全对齐JS原生行为) if not isinstance(f, (str, int, float, bool)) and not callable(f): # 你的业务逻辑 # 排除None的版本(对应JS中常用写法 if (f && typeof f === 'object')) if f is not None and not isinstance(f, (str, int, float, bool)) and not callable(f): # 你的业务逻辑
注意事项
Python中所有数据类型都是object的子类,直接写isinstance(f, object)会对所有值返回真,不能用来等效JS的typeof判断,一定要根据实际业务过滤不需要的类型。
内容的提问来源于stack exchange,提问作者alphaomega
相关产品推荐
相关产品推荐

