javascript - 通过对象验证属性?
问题描述
如何通过对象验证属性?我已经在checkProperty
我期望missingFields
的回报Batch.Name
不见了。
当前正在输出[ 'Batch.Id', 'Batch.Name' ]
,这是错误的。
let data = {
Batch: {
Id: 123,
},
Total: 100,
}
let checkProperty = ['Total', 'Batch.Id', 'Batch.Name'];
let missingFields = [];
checkProperty.forEach(field => {
if (!data[field]) {
missingFields.push(field);
}
});
console.log(missingFields);
解决方案
您必须使用类似reduce
after split on 点来检查嵌套值是否存在:
let data = {
Batch: {
Id: 123,
},
Total: 100,
}
let checkProperty = ['Total', 'Batch.Id', 'Batch.Name'];
let missingFields = [];
checkProperty.forEach(field => {
const val = field.split('.').reduce((a, prop) => !a ? null : a[prop], data);
if (!val) {
missingFields.push(field);
}
});
console.log(missingFields);
推荐阅读
- ios - 如何在 iOS Swift 中更改音频文件比特率(每秒位数)?
- git - Git 同步子文件夹 git
- c# - 如何有效地计算 asp.net 核心中的 HTTP 调用?
- odoo - 根据选择字段更改多对一域
- php - Laravel 添加到模型
- powerbi - 对于嵌入式视觉对象,当前不支持 ArcGIS Maps for Power BI
- reactjs - 当我运行 npm start 它工作但 npm run deploy (Github) 抛出错误
- swift - 包含许多文件的 Xcode 12.5 问题处理项目
- python - 带有while语句的for循环坚持某些迭代
- r - 多个表格中的 stargazer() 标题