Javascript 如何获取对象中的数组值?

Javascript 如何获取对象中的数组值?,javascript,parsing,Javascript,Parsing,我有一个这样的物体: var routes = { 'fr-FR': [ '/accueil', '/offre', '/specifications' ], 'en-US': [ '/home', '/offer', '/specifications-en' ], 'de-DE': [ '/startseite', '/annbod', '/specificaties' ] }; 我的目标是根据u

我有一个这样的物体:

var routes = {
  'fr-FR': [
    '/accueil',
    '/offre',
    '/specifications'
  ],
  'en-US': [
    '/home',
    '/offer',
    '/specifications-en'
  ],
  'de-DE': [
    '/startseite',
    '/annbod',
    '/specificaties'
  ]
};
我的目标是根据url获取区域设置

我尝试了如下内容:(url=
/offer

我得到的结果是:

getLocale for /offer
lg = fr-FR
rt = 0
lg = fr-FR
rt = 1
lg = fr-FR
rt = 2
lg = fr-FR
rt = 3
lg = fr-FR
rt = 4
lg = en-US
rt = 0
lg = en-US
rt = 1
lg = en-US
rt = 2
lg = en-US
rt = 3
lg = en-US
rt = 4
lg = de-DE
rt = 0
lg = de-DE
rt = 1
lg = de-DE
rt = 2
lg = de-DE
rt = 3
lg = de-DE
rt = 4
所以我想我在第一个for-in循环中做得很好,但是我不知道如何在数组中循环,而不是它的名称的字符

此外,我在许多帖子上读到,for in循环在某些情况下不是最好的循环方式,但哪种方式是最好的


提前感谢。

循环的第一部分是正确的,但请注意:
语言是字符串(“fr-fr”、“en-US”等),而不是您要查找的数组

相反,您可以通过如下方式访问
routes[language]
来访问路由:

for (var language in routes) {
    var routeByLanguage = routes[language];
    for (var i = 0, len = routeByLanguage.length; i < len; i++) {
        console.log('lg = ' + language);
        console.log('rt = ' + routeByLanguage[i]);
        if (routeByLanguage[i] === url) {
            return routeByLanguage[i];
        }
    }
}
for(路由中的var语言){
var routeByLanguage=路由[语言];
for(变量i=0,len=routeByLanguage.length;i

谢谢你的帮助!我使用字符串是因为JSLint对locales格式(可能是“-”)很生气,不管怎样,它现在可以工作了。(只是返回的是
language
,而不是
routeByLanguage
,但这是次要的,再次感谢)。只要允许,就会标记为答案。
for..在对象键上循环,而不是在对象值上循环。
angebot
可能更好,我用谷歌翻译德语。而且,你的解决方案比我的尝试更漂亮!
var routes = {
    'fr-FR': [
        '/accueil',
        '/offre',
        '/specifications'
    ],
    'en-US': [
        '/home',
        '/offer',
        '/specifications-en'
    ],
    'de-DE': [
        '/startseite',
        '/annbod',
        '/specificaties'
    ]
};

url = '/annbod'; // did you mean "angebot"?

locale = Object.keys(routes).filter(function(locale) {
    return routes[locale].indexOf(url) >= 0;
});

console.log(locale)[0]; // 'de-DE'