Object internal reference declarations

后端 未结 2 1648
甜味超标
甜味超标 2020-12-17 16:59

I\'m watching out for a shortcut way to use values from a dictionary as an internal reference inside the dictionary. The code shows what I mean:

var dict =          


        
相关标签:
2条回答
  • 2020-12-17 17:31

    You could use mustache and define your json as a "mustache template", then run mustache to render the template. Take into account you would need to run (n) times if you have nested dependencies. In this case you have 3 dependencies ABC --> AB --> A.

    var mustache = require('mustache');
    
    var obj = {
      A : 'A',
      AB : '{{A}}' + 'B',
      ABC : '{{AB}}' + 'C'
    }
    
    function render(stringTemplate){
      while(thereAreStillMustacheTags(stringTemplate)){
        stringTemplate = mustache.render(stringTemplate, JSON.parse(stringTemplate));
      }
      return stringTemplate;
    }
    
    function thereAreStillMustacheTags(stringTemplate){
      if(stringTemplate.indexOf('{{')!=-1)
        return true;
      return false;
    }
    
    console.log(render(JSON.stringify(obj)));
    

    And the output is:

    {"A":"A","AB":"AB","ABC":"ABC"}
    
    0 讨论(0)
  • 2020-12-17 17:36

    No. The best you can do is:

    var dict = {
        'entrance' : {
            'rate1' : 5,
            'rate2' : 10,
            'rate3' : 20,
        }
    };
    dict.movies = {
        'theDarkKnight' : {
            '00:00' : dict.entrance.rate1,
            '18:00' : dict.entrance.rate2,
            '21:00' : dict.entrance.rate3
        },
        ...
    };
    
    0 讨论(0)
提交回复
热议问题