如何检测JSON对象中指定属性是否存在并提取对应data数组与param1字段
实现方案
步骤1:判断属性是否存在
推荐使用ES2022新增的Object.hasOwn()方法做判断,只会检查对象自身的属性,不会受原型链属性干扰,稳妥性更高。如果需要兼容旧运行环境,也可以用in操作符替代。
步骤2:提取目标字段
用对象解构语法直接从匹配到的属性值里取出param1和data即可,写法简洁不需要冗余的逐个赋值操作。
完整代码示例
const matchedProperty = "property1" const jsonObject = { "property1": { param1: '', param2: '', param3: '', data: [ {key: 'value1'}, {key: 'value2'}, {key: 'value3'}, {key: 'value4'} ], param4: '' }, "property2": { param1: '', param2: '', param3: '', data: [ {key: 'value1'}, {key: 'value2'}, {key: 'value3'}, {key: 'value4'} ], param4: '' } } // 核心逻辑 if (Object.hasOwn(jsonObject, matchedProperty)) { // 解构提取需要的两个字段 const { param1, data } = jsonObject[matchedProperty]; // 此处可直接使用提取到的param1和data console.log('提取到的param1:', param1); console.log('提取到的data数组:', data); } else { console.log(`未找到${matchedProperty}对应的属性`); }
补充说明
如果需要把提取结果整合为新对象复用,直接在判断分支内返回{param1, data}即可。另外你给出的示例代码里第二个属性名拼写为propery2,少了一个t,实际使用时注意属性名拼写正确,避免匹配失败。
内容的提问来源于stack exchange,提问作者Profit23
相关产品推荐
相关产品推荐

