1

以下の関数を使用すると、親オブジェクトの名前を知ること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

4

1 に答える 1

3

あなたはほとんどそこにいました:

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);
于 2013-03-26T14:13:48.127 に答える