javascript - 通过对象验证属性?

标签 javascript node.js

如何通过对象验证属性?我在 checkProperty

中定义了属性列表

我希望 missingFields 返回 Batch.Name is missing.

目前正在输出 [ '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 的方法来检查嵌套值是否存在:

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);

关于javascript - 通过对象验证属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801522/

相关文章:

javascript - 在 NodeJS 中复制缓冲区的问题

javascript - 从 JSON 文件接收 JavaScript 对象后正确访问它

node.js - 在 Heroku 上运行多个 Node.js 脚本

javascript - 如何使用静态 css 更改背景图像并进行维护?

javascript - 在php中使用服务器发送事件从mysql获取数组

javascript - 按计数下载图像

javascript - 更新循环内的变量

node.js - 托管 node.js

javascript - Angular 模型未更新

node.js - sequelize 从 .then 返回结果