2016-03-30 17 views
0

もっと柔軟な方法で2つのオブジェクトを比較する方法を探しています。ワイルドカードを使ってnodeJSオブジェクトを比較する

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:*の後の*は、追加のプロパティを宣言できることを意味します。

私にこれを可能にするモジュールがありますか?私はそれをGoogleにしようとしたが、私は有用な何かを見つけることができませんでした。

答えて

1

私が考えることができる最も近いことは、あなたのオブジェクトをもう一度検証するためにいくつかのJSONスキーマを使用することです。 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で解析することができないということです。おそらく、オブジェクトの内容を検証する別の方法(スキーマバリデータなど)を検索する必要があります。

関連する問題