如何使用字符串值在javascript中访问数组?

时间:2012-03-11 22:28:37

标签: javascript

这已经困扰了我很长一段时间了。我想要做的就是从给定键的数组中返回一个值,但是使用变量(_interview)来选择要返回的数组。

var utils = function () {

var _language = "";
var _interview = "";
var _base = "";

var _alerts = function (code) {

    var en = new Array(),
        fr = new Array();

    en[0] = "You must enter a value in the box before continuing.";
    fr[0] = "Vous devez entrer une sélection pour les options mises en évidence.";

    // I know _interview is returning the correct value of either "en" or "fr"
    // I have tried this[_interview][code] but I get property not defined at the index
    // How do I return the index from the right array?
};

return {

    lang : function () {

        _language = $("#language option:selected").val();
        var answer = confirm(_alerts(0)); // Call from here

    }
};
}();

$(document).ready(function ()
{
    utils.lang();
});

4 个答案:

答案 0 :(得分:3)

最好使用2D数组(深层对象结构),字符串作为键而不是整数索引

var languages = {
    'en': {
        'string_key_1' : 'String For Key 1'
    },
    'fr': {
        'string_key_1' : 'Le String ...'
    }
};

获取类似

的值
var key = 'string_key_1';
var translated_value = languages[_interview][key];

答案 1 :(得分:1)

您可以使用方括号访问对象属性的值,如下所示:

var index = 'foo',
    myObj = {
      foo: 'bar'
    };

alert(myObj[index]); // 'bar'

对于数组也是如此,但只有数字键可以工作:

var index = 1,
    myArr = ['foo','bar'];

alert(myArr[index]); // 'bar'

答案 2 :(得分:1)

Bracket notation是正确的方法。但是,您需要将语言放入数组中,因为this并未像您想象的那样引用函数范围。在这个特定的情况下,this === window显然不是你想要的!

改为给出一个镜头:

var utils = function() {

    var _language = "";
    var _interview = "";
    var _base = "";

    var _alerts = function(code) {

        var messages = {
            en: ["You must enter a value in the box before continuing."],
            fr: ["Vous devez entrer une sélection pour les options mises en évidence."]
        };

        // I know _interview is returning the correct value of either "en" or "fr"
        // I have tried this[_interview][code] but I get property not defined at the index
        // How do I return the index from the right array?
        return messages[_language][code];
    };

    return {

        lang: function() {

            _language = $("#language").val(); // note the selector change
            var answer = confirm(_alerts(0)); // Call from here
        }
    };
}();

$(document).ready(function() {
    utils.lang();
});​

工作演示:english | french

答案 3 :(得分:-1)

查看eval()函数。这应该可以帮助您实现所需。