简体   繁体   English

如何使用带有变量的javascript访问对象数组

[英]How to access object array using javascript with variable

var dict = {
  "configMigratedTo": {
        "message": "Migrated configuration to configurator: $1"
    }
}
var parametersForTranslation = {};
function __tr(src, params) {
  parametersForTranslation[src] = params;
  return buildMessage(src);
}

function buildMessage(src){
    var message=dict[src] ? dict[src].message : src
    console.log(message);
    var messageArray = message.split("$");
    var output = "";
    messageArray.forEach(function(elem, index){
        if(index === 0){
            output += elem;
        }else{
            // get variable and index
            var paramIndex = configMigratedTo.substring(0, 1);
            var paramValue = parametersForTranslation[src][paramIndex-1];
            output += paramValue;
            output += configMigratedTo.substring(1);
        }
    });
    return output;
}
__tr("configMigratedTo", [2]);
console.log(buildMessage("configMigratedTo"));

i want get result like __tr("configMigratedTo", [2]); 我想得到像__tr(“configMigratedTo”,[2])的结果; then it will give me 然后它会给我

Migrated configuration to configurator: 2 迁移配置到配置器:2

i do not know where is wrong in my code 我不知道我的代码在哪里出错了

Would that be enought? 这会是应该的吗?

 var dict = { "configMigratedTo": { "message": "Migrated configuration to configurator: " } } function buildMessage(src,param){ var output = dict[src].message + param; return output; } console.log(buildMessage("configMigratedTo",2)); 

Try this one. 试试这个吧。 Hope it helps! 希望能帮助到你!

var dict = {
  "configMigratedTo": {
        "message": "Migrated configuration to configurator: $1"
    }
}

function __tr(src, params) 
{
    for (var key in dict)
  {
    if (key === src)
    {
        var message = dict[key].message;
        return message.substring(0, message.length - 2) + params[0];
    }
  }
  return;
}


console.log(__tr("configMigratedTo", [2]))

https://jsfiddle.net/eLd9u2pq/ https://jsfiddle.net/eLd9u2pq/

You are overcomplicating this, it's much easier using a regex and passing a function as replacer 你过度复杂,使用正则表达式并将函数作为替换器传递会更容易

 var dict = { "configMigratedTo": { "message": "Migrated configuration to configurator: $1" } } function __tr(src, params) { if (! dict[src]) return src; if (! /\\$0/.test(dict[src].message)) params.unshift(''); return dict[src].message.replace(/\\$(\\d)+/g, (orig, match) => params[match] || orig); } console.log(__tr("configMigratedTo", [2])); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM