12

我正在寻找一种使用字典中的值作为字典内部引用的快捷方式。代码显示了我的意思:

var dict = {
    'entrance':{
        'rate1': 5,
        'rate2':10,
        'rate3':20,
    },

    'movies':{
        'theDarkKnight':{
            '00:00':<entrance.rate1>,
            '18:00':<entrance.rate2>,
            '21:00':<entrance.rate3>
        },
        ...
    };

有没有偷偷摸摸的方法来做到这一点?

4

2 回答 2

10

不,您能做的最好的事情是:

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
    },
    ...
};
于 2012-12-03T15:20:04.023 回答
3

您可以使用mustache并将您的 json 定义为“mustache 模板”,然后运行 ​​mustache 以呈现模板。考虑到如果您有嵌套的依赖项,您将需要运行 (n) 次。在这种情况下,您有 3 个依赖项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)));

输出是:

{"A":"A","AB":"AB","ABC":"ABC"}
于 2014-10-03T20:13:01.160 回答