这已经困扰了我很长一段时间了。我想要做的就是从给定键的数组中返回一个值,但是使用变量(_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();
});
答案 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();
});
答案 3 :(得分:-1)
查看eval()函数。这应该可以帮助您实现所需。