javascript - 使用通配符比较nodeJS对象

标签 javascript node.js

我正在寻找一种以更灵活的方式比较两个对象的方法。 我想要这样的东西:

var alice = {
                firstname:'Jan',
                lastname:'Smith',
                amount: 0,
                friendList:[], 
                removeAmount : function(amount){
                    this.amount = this.amount - amount;
                }
    };

应该匹配这个

var aliceWildCard = {
            firstname: 'Jan',
            lastname:*,
            *,
            removeAmount : function(amount){
                this.amount = this.amount - amount;
            }
};

属性后面的 * 表示属性必须存在,但值并不重要。 请注意,“lastname:*”后面的 * 表示我允许声明其他属性。

是否存在允许我执行此操作的模块?我尝试用谷歌搜索,但找不到任何有用的东西。

最佳答案

我能想到的最接近的事情是使用一些 JSON 模式来再次验证您的对象。您可以使用几个 Nodejs 模块来完成此操作,例如 schema-validator

这是有关如何使用模式验证器实现该功能的示例(请注意,这不是您想要的所有功能,但我相信您可以想到一些东西):

var Validator = require('schema-validator');

var aliceSchema = {
    type: Object,

    firstname: {
        type: String,
        required: true,
        test: /^Jan$/i
    },

    lastname: {
        type: String,
        required: true
    },

    removeAmount: {
        type: Function,
        required: true
    }
}


var aliceValidator = new Validator(aliceSchema);
aliceValidator.debug = true;

var result = aliceValidator.check({
    firstname: 'Jan',
    lastname: 'Smith',
    removeAmount: function() { }
});

console.log(result);

您的代码片段的问题是,由于通配符表示法,您的 aliceWildcard 对象甚至无法被 Javascript 解析。您可能需要寻找另一种方法来验证对象的内容(例如架构验证器)。

关于javascript - 使用通配符比较nodeJS对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36307868/

相关文章:

javascript - 使用 post 将 span 值发送到 php 脚本

node.js - 尝试将存储在 aws S3 中的图像显示到 React 应用程序

mysql - 在应用程序启动时在 Nodejs 中创建重复表的 Sequelize

node.js - 如何先创建目录,然后通过node js中的multer上传该目录上的图像

javascript - 比较两个对象并添加差异,而无需操作现有对象

javascript - 当我不知道 key 的名称时如何读取 json 对象

javascript - 从 getJSON 查询获取 SharePoint Lookup 列的值

java - 如何在ZK MVVM中使用javascript调用java方法?

Node.js 服务器 'close' 事件似乎没有触发

node.js - 如何让 slc 命令在 Ubuntu 上运行?