javascript - javascript - 验证对象内的嵌套键
问题描述
我有以下 JavaScript 对象。
let obj = {
"type": "user",
"personalDetails": {
"firstName": "Steven",
"address": {
"streetName": "abcd",
"zipCode": "012345"
}
},
"employeeDetails": {
"designation": {
"id": "1234",
"manage": "Mark",
}
}
}
如何创建一个动态函数,将其
JS object obj
作为第一个参数,一个父节点作为第二个参数,一个子节点作为第三个参数。如果第三个参数作为第二个参数中的子节点存在,则该函数应返回 true。例如。
const childNodeExist = (obj, personalDetails, firstName) => {
//.. since firstName exists in personalDetails should return true
}
const childNodeExist = (obj, employeeDetails, designation) => {
//.. since designation exists in employeeDetails should return true
}
const childNodeExist = (obj, employeeDetails, salary) => {
//.. since salary exists in employeeDetails should return false
}
解决方案
您可以尝试使用Object.prototype.hasOwnProperty()
:
该
hasOwnProperty()
方法返回一个布尔值,指示对象是否具有指定的属性作为它自己的属性(而不是继承它)。
let obj = {
"type": "user",
"personalDetails": {
"firstName": "Steven",
"address": {
"streetName": "abcd",
"zipCode": "012345"
}
},
"employeeDetails": {
"designation": {
"id": "1234",
"manage": "Mark",
}
}
}
const childNodeExist = (obj, prop, childProp) => {
return obj[prop]?.hasOwnProperty(childProp) ?? false;
}
console.log(childNodeExist(obj, 'personalDetails', 'firstName'));
console.log(childNodeExist(obj, 'employeeDetails', 'designation'));
console.log(childNodeExist(obj, 'employeeDetails', 'salary'));
更新:在所有浏览器中支持的替代方式:
let obj = {
"type": "user",
"personalDetails": {
"firstName": "Steven",
"address": {
"streetName": "abcd",
"zipCode": "012345"
}
},
"employeeDetails": {
"designation": {
"id": "1234",
"manage": "Mark",
}
}
}
const childNodeExist = (obj, prop, childProp) => {
return obj.hasOwnProperty(prop)? obj[prop].hasOwnProperty(childProp) : false;
}
console.log(childNodeExist(obj, 'personalDetails', 'firstName'));
console.log(childNodeExist(obj, 'employeeDetails', 'designation'));
console.log(childNodeExist(obj, 'employeeDetails', 'salary'));
推荐阅读
- python - 请求发布字典格式错误的数据
- powershell - 如何合并数组以将一个值与数组中的所有值进行比较?
- python - Python Battery AI - 如何仅在电池连接或断开连接时记录
- c - 在c中打印倒计时数字的递归函数
- javascript - 未捕获的 ReferenceError:未定义 Rx
- python - Python,装饰函数中的引用类实例/方法
- php - 如何在 Doctrine 查询构建器中过滤出 OneToMany 关系的结果
- ios - 使用 AVCaptureSession 和 AVCaptureVideoPreviewLayer 正确关闭视图控制器(以编程方式)
- c++ - gcc-7:错误:无法识别的命令行选项“-m64”
- amazon-web-services - AWS CodeBuild Git 连接 - 仅刷新更新的代码