Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据其属性访问javascript对象_Javascript_Jquery_Object - Fatal编程技术网

根据其属性访问javascript对象

根据其属性访问javascript对象,javascript,jquery,object,Javascript,Jquery,Object,使用下面的函数,可以通过知道父对象的名称来获取translate属性。如果没有对象匹配,我希望函数选择具有已翻译国家文本属性的对象。解决方案应该是jQuery/Javascript。这就是我能走多远,我不知道从这里走到哪里 function getCurrency(country) { var currency = { 'Förenade Arabemiraten' : currData = { 'code' : 'AED', 'info'

使用下面的函数,可以通过知道父对象的名称来获取
translate
属性。如果没有对象匹配,我希望函数选择具有已翻译国家文本属性的对象。解决方案应该是jQuery/Javascript。这就是我能走多远,我不知道从这里走到哪里

  function getCurrency(country) {
    var currency = {
      'Förenade Arabemiraten' : currData = {
        'code' : 'AED',
        'info' : 'Dirham',
        'translate' : 'United Arab Emirates'
      },
      'Afghanistan' : currData = {
        'code' : 'AFN',
        'info' : 'Afghani',
        'translate' : 'Afghanistan'
      },
      'Albanien' : currData = {
        'code' : 'ALL',
        'info' : 'Lek',
        'translate' : 'Albania'
      }
    };
    console.log(currency[country]);
    if(currency[country] !== undefined) {
      return currency[country];
    }
    else {
      for (var key in currency) {
        console.log(key);
      }
    }  
  }

var foo = getCurrency('Albanien');
// alerts 'Albania'
alert(foo.translate);

var bar = getCurrency('Albania');
alert(bar.translate);
// undefined, should output 'Albanien' and all the object properties (info, code)
JS Bin:

你就快到了:

for (var key in currency) {
    if(currency[key].translate == country) {
        return currency[key];
    }
}
此外,您应该从文本中删除
currData=
;它只是创建一个全局变量,而不是名为
currData
的属性


要同时返回国家名称,我建议您返回一个包含它的新对象:

function getCurrency(country) {
    var currency = {
      'Förenade Arabemiraten' : currData = {
        'code' : 'AED',
        'info' : 'Dirham',
        'translate' : 'United Arab Emirates'
      },
      'Afghanistan' : currData = {
        'code' : 'AFN',
        'info' : 'Afghani',
        'translate' : 'Afghanistan'
      },
      'Albanien' : currData = {
        'code' : 'ALL',
        'info' : 'Lek',
        'translate' : 'Albania'
      }
    };
    if(currency[country] !== undefined) {
      return {
        country: country,
        countryData : currency[country]
      };
    } else {
      for (var key in currency) {
        if(currency[key].translate == country) {
          return {
            country: key,
            countryData : currency[key]
          };
        } 
      }
    }  
  }

var foo = getCurrency('Albanien');
// alerts 'Albanien'
alert(foo.country);
// alerts 'Albania'
alert(foo.data.translate);

var bar = getCurrency('Albania');
// alerts 'Albanien'
alert(bar.country);
// alerts 'Albania'
alert(bar.data.translate);

太好了!我更新了JS文件。这就是你的意思吗?谢谢你的回答。是的,这正是我的意思。很乐意帮忙!是否也可以如问题中所述,将
输出
'Albanien'
(对象名称)?:)谢谢。如果函数根据具体情况返回不同的格式,那就很奇怪了。查看我的更新。再次感谢@bfavaretto它看起来像
bar.country
bar.countryData.translate
都返回阿尔巴尼亚。我更新了JS文件