javascript - 根据其属性访问javascript对象

标签 javascript jquery object

使用下面的函数,可以通过知道父对象的名称 来获取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斌:http://jsbin.com/enezaz/1/edit

最佳答案

你快到了:

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);

关于javascript - 根据其属性访问javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15639162/

相关文章:

javascript - 如何使用 jQuery 过滤数据表的年份和月份?

javascript - 获取数组内对象的名称

jquery - 如何使用knockout JS 添加或删除jQueryUI 选项卡?

javascript - 提交后 Controller 中的 formCollection 为空

jquery - 当用户将鼠标悬停在使用 JQuery 的链接上时如何显示图像

c++ - 使用常量变量声明对象数组

java - 为什么不能将 double 值转换为 Byte 对象?

javascript - 图像交换不同

javascript - Html + JavaScript + CSV 解析 + Google Charts 帮助哦快乐 xD ...

javascript - 使用 jQuery .each() 的递增数字