Javascript 如何使用函数结果调用变量名?

Javascript 如何使用函数结果调用变量名?,javascript,Javascript,我有一个,按城市划分的可用工作,如下所示: <select id="jobs"> <option value="columbus">Columbus, OH: Material Handler</option> <option value="columbus">Columbus, OH: Fulfillment Center Worker</option> <option value="baltimore"

我有一个
,按城市划分的可用工作,如下所示:

<select id="jobs">
    <option value="columbus">Columbus, OH: Material Handler</option>
    <option value="columbus">Columbus, OH: Fulfillment Center Worker</option>
    <option value="baltimore">Baltimore, MD: Material Handler</option>
  </select>
返回的结果很好。对于第一个选项,我得到:

columbus
这很好,现在我的问题是,如何使用它调用另一个变量,例如:

var columbus = ['Columbus','3500 Southwest Blvd',', 8 am to 3:30 pm'],
    baltimore = ['Baltimore','913 Old Philadelphia Rd',', 8 am to 3 pm'],
    currentCity = columbus[0] 
console.log(currentCity);
控制台将返回:

Columbus
但是,如何使用
jobName
动态更新currentCity,如:

currentCity = jobName[0]

与其使用不同的变量,不如使用对象来保存所有城市信息,如下所示:

var cities = {
  colombus: ['Columbus','3500 Southwest Blvd',', 8 am to 3:30 pm'],
  baltimore: ['Baltimore','913 Old Philadelphia Rd',', 8 am to 3 pm']
};
然后你就可以写了

var currentCity = cities[jobName][0];

与其使用不同的变量,不如使用对象来保存所有城市信息,如下所示:

var cities = {
  colombus: ['Columbus','3500 Southwest Blvd',', 8 am to 3:30 pm'],
  baltimore: ['Baltimore','913 Old Philadelphia Rd',', 8 am to 3 pm']
};
然后你就可以写了

var currentCity = cities[jobName][0];
您似乎希望“查找”基于键的值。通常,这是使用所谓的“字典”来完成的,或者更正式地说,是一个“”(有时也称为“”,尽管哈希表只是字典的一种类型)

JavaScript有一些类似的东西,您可以使用这些对象。它们使用大括号
{}
编写,键与值之间用冒号分隔
。键是字符串,但引号通常是可选的。价值观可以是你想要的任何东西

var cities = {
    columbus: ['Columbus','3500 Southwest Blvd',', 8 am to 3:30 pm'],
    baltimore: ['Baltimore','913 Old Philadelphia Rd',', 8 am to 3 pm']
};
一旦您有了密钥(
jobName
,在您的示例中),就可以简单地使用
cities
对象来查找您需要的任何内容

var jobInfo = cities[jobName],
    currentCity = jobInfo[0];

console.log(currentCity);

旁注:JavaScript对象并不是真正成熟的字典。在大多数其他语言中,字典实际上可以为键使用许多不同类型的值(例如整数),但在JavaScript中,键通常只能是字符串。

您似乎希望基于键“查找”值。通常,这是使用所谓的“字典”来完成的,或者更正式地说,是一个“”(有时也称为“”,尽管哈希表只是字典的一种类型)

JavaScript有一些类似的东西,您可以使用这些对象。它们使用大括号
{}
编写,键与值之间用冒号分隔
。键是字符串,但引号通常是可选的。价值观可以是你想要的任何东西

var cities = {
    columbus: ['Columbus','3500 Southwest Blvd',', 8 am to 3:30 pm'],
    baltimore: ['Baltimore','913 Old Philadelphia Rd',', 8 am to 3 pm']
};
一旦您有了密钥(
jobName
,在您的示例中),就可以简单地使用
cities
对象来查找您需要的任何内容

var jobInfo = cities[jobName],
    currentCity = jobInfo[0];

console.log(currentCity);



旁注:JavaScript对象并不是真正成熟的字典。在大多数其他语言中,字典实际上可以为键使用许多不同类型的值(例如,整数),但在JavaScript中,键通常只能是字符串。

Just
currentCity=jobName
jobName
不是数组,它是一个字符串。好的,这很好,谢谢,但是我如何用这个方法调用数组中的第二个字符串?只是
currentCity=jobName
jobName
不是数组,它是一个字符串。好的,这很好,谢谢你,但是我如何用这个方法调用数组中的第二个字符串呢?我正要回答这个问题。太棒了,我想我更喜欢这个,我会试试这个谢谢!我不能让它工作<代码>$(“#作业表单”).submit(函数(e){e.preventDefault();var jobName=document.getElementById(“作业”).value;var cities={columbus:['columbus','3500 Southwest Blvd',','8am-to 3pm',巴尔的摩:['baltimore','913 Old Philadelphia Rd','8am-pm']};var currentCity=cities[jobName][0];var currentAddress=cities[jobName][1];var currentTime=cities[jobName][2];$('.job').slideDown();$('.job.name').text(currentCity);}myjsfiddle@ChrisBurk jsfiddle中的选项值以大写字母开头,而不是像问题中那样的小写字母。对象中的键需要匹配。我正要回答这个问题。太棒了,我想我更喜欢这个,我会试试的,谢谢!我不能让它工作<代码>$(“#作业表单”).submit(函数(e){e.preventDefault();var jobName=document.getElementById(“作业”).value;var cities={columbus:['columbus','3500 Southwest Blvd',','8am-to 3pm',巴尔的摩:['baltimore','913 Old Philadelphia Rd','8am-pm']};var currentCity=cities[jobName][0];var currentAddress=cities[jobName][1];var currentTime=cities[jobName][2];$('.job').slideDown();$('.job.name').text(currentCity);}myjsfiddle@ChrisBurk jsfiddle中的选项值以大写字母开头,而不是像问题中那样的小写字母。对象中的键需要匹配。我非常感谢您的帮助,我尝试了这个,但没有运气,我不确定我做错了什么?这是我的提琴:@ChrisBurk:HTML中的选项值以大写字母开头,表中的名称以小写字母开头。请注意,您在问题中发布的HTML也以小写字母开头。谢谢,这就是问题所在!我真的很感谢你的帮助,我尝试了这个,但没有运气,我不确定我做错了什么?这是我的提琴:@ChrisBurk:HTML中的选项值以大写字母开头,表中的名称以小写字母开头。请注意,您在问题中发布的HTML也以小写字母开头。谢谢,这就是问题所在!