在Javascript数组中查找字符串键

时间:2009-09-06 02:41:46

标签: javascript arrays

1)我有这个Javascript数组:

lang=new Array();
lang["sq"]="Albanian";
lang["ar"]="Arabic";
lang["en"]="English";
lang["ro"]="Romanian";
lang["ru"]="Russian";

2)在其他一些过程中,变量中有一个返回值:

result.detectedSourceLanguage = 'en';

3)现在,我想打印语言全名:

alert(lang[result.detectedSourceLanguage]);

对话框显示:未定义

有什么想法吗?

BTW:即时通讯使用JQuery,欢迎使用JQuery解决方案。

4 个答案:

答案 0 :(得分:21)

Array使用整数索引。您可能需要Object,它支持字符串索引:

lang=new Object();
lang["sq"]="Albanian";
lang["ar"]="Arabic";
lang["en"]="English";
lang["ro"]="Romanian";
lang["ru"]="Russian";

// or

lang = {
    'sq': 'Albanian',
    'ar': 'Arabic',
    // ...
    'ru': 'Russian'
};

(后一个例子可能更好,因为更多的JS程序员会对此感到满意。)

答案 1 :(得分:3)

此脚本生成一个消息框(在IE和FF中选中),显示“英语”:

lang = new Array();
lang["sq"] = "Albanian";
lang["ar"] = "Arabic";
lang["en"] = "English";
lang["ro"] = "Romanian";
lang["ru"] = "Russian";

detectedSourceLanguage = 'en';

alert(lang[detectedSourceLanguage]);

唯一的问题可能是result对象。

答案 2 :(得分:1)

检查result(和result.detectedSourceLanguage)的类型和值。它可能是以下之一

  • result未定义
  • result不是对象,或者没有任何名为detectedSourceLanguage
  • 的属性
  • result.detectedSourceLanguage的值不是字符串,或者lang中没有这样的键(然后它应该为undefined返回alert(lang[result.detectedSourceLanguage]);

BTW,你的问题与jQuery无关

答案 3 :(得分:0)

在使用之前立即尝试提醒result.detectedSourceLanguage。有可能它不符合您的预期。这应该有用。