0

如果我有一个带有不同语言短语的 JSON:

var lang = {
    'topic' : {
        'en' : 'Topic',
        'et' : 'Teema',
        'fi' : 'Aihe'
    },
    'MainPage' : {
        'en' : 'Main page',
        'et' : 'Pealeht',
        'fi' : 'Pääsivu'
    }//,
    //...etc
};

如何定义用于选择特定语言的函数:

function getText(lang, langKey) {
    //???????
    return langJson;
}

输出相同的短语,例如:

getText(lang, 'en'); //outputs {topic:'Topic',MainPage:'Main page',..}
getText(lang, 'et'); //outputs {topic:'Teema',MainPage:'Pealeht',..}
getText(lang, 'fi'); //outputs {topic:'Aihe',MainPage:'Pääsivu',..}

万事如意:我

4

1 回答 1

3

基本上,您必须遍历整个lang对象并选择正确语言的值。

Object.keys将返回一个Array包含初始lang对象的键。您可以使用它们来创建新对象。您可以使用 for 循环遍历这些键并将相应的值添加到结果对象,但我喜欢reduce这样做:

function getText(lang, langKey) {
  return Object.keys(lang).reduce(function(re, key) {
    re[key] = lang[key][langKey];
    return re;
  }, {})
}
于 2012-06-24T07:33:21.413 回答