使用字符串值访问对象键

时间:2017-07-06 17:58:35

标签: javascript jquery object

我有一个手工输入的数据库,其中的对象包含每个类别的类别和单词列表,如下所示:

var words =
{
    sports: [
        'baseball', 'football', 'volleyball', 'basketball', 'soccer'],

    animals: [ 
        'dog', 'cat', 'elephant', 'crocodile', 'bird'],

    entertainment: [
        'netflix', 'movies', 'music', 'concert', 'band', 'computer']
}

我的HTML有一个引导下拉列表,它将根据该列表显示所有类别。我有代码工作,给我点击作为字符串的类别的值:如下所示:

$(document).on('click', '.dropdown-menu li a', function () {
    var selectedCategory;

    selectedCategory = $(this).text();
    //setting value of category to global variable
    categorySelected = selectedCategory;
});

我需要能够从该值中找到数据库中的密钥。 问题是我无法访问单词。“动物” 我需要从我的字符串中取引号来获取这样的单词列表: words.animals

我该怎么做?我尝试过replace()但它不起作用。

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试访问与public static void nJSON(String username ) { File file = new File("src/jsonFiles/" + username + ".json"); if (file.isDirectory()) { System.err.println(username + ".json exist and is a directory."); return; } if(!file.getParentFile().exists() && !file.getParentFile().mkdirs()) { System.err.println("Failed to create directory " + file.getParent()); return; } FileWriter writer = null; try{ json.put("Username", username); json.put("Password", mainFiles.windowsSrc.UserInfo.password); writer = new FileWriter(file); writer.write(json.toJSONString()); writer.close(); System.out.println(username + ".json created."); } catch(IOException e){ e.printStackTrace(); } finally { if(writer != null) { try { writer.close(); } catch(IOException ignore) { } } } } 对象中的类别对应的值列表。键可以是字符串,因此words将是获取动物列表的示例。

JavaScript允许将变量用作键,因此您可以按如下方式访问它:

words['animals']

答案 1 :(得分:0)

您可以将文本(从下拉列表中选择的值)传递给函数以查找密钥



var words = {
  sports: [
    'baseball', 'football', 'volleyball', 'basketball', 'soccer'
  ],

  animals: [
    'dog', 'cat', 'elephant', 'crocodile', 'bird'
  ],

  entertainment: [
    'netflix', 'movies', 'music', 'concert', 'band', 'computer'
  ]
}
// function to find the key
function findKey(selText) {
 //loop through the object
  for (var keys in words) {
 //get the array
    var getArray = words[keys]
  //inside each array check if the selected text is present using index of 
    if (getArray.indexOf(selText) !== -1) {
      console.log(keys)
    }

  }
}

findKey('music')