2013-11-07 5 views
0

У меня есть массив как это:точка Javascript свойства объекта

elements = new Array(
     {opinions: 'p31/php/endpoint.php?get=opinions'}, // function to call and API endpoint, php/endpoint.php 
     {top3positive: 'p31/php/endpoint.php?get=top3positive'}, // function to call andAPI endpoint, php/endpoint.php 
     {top3negative: 'p31/php/endpoint.php?get=top3negative'} // function to call andAPI endpoint, php/endpoint.php 
     ); 

Я пытаюсь получить значение. Простая вещь будет, например: elements[0].opinions будет правильно возвращаться p31/php/endpoint.php?get=opinions Дело в том, что мне нужно получить такую ​​же информацию, не зная непосредственно значения.

Так я делаю следующее:

function getEndPoint(element) { 
    for (index in elements) { 
     if (Object.getOwnPropertyNames(elements[index]) == element) { 
      console.log(eval(elements[index]. element)); 
     } 
    } 
} 

element, например, стоит за мнения. Когда я делаю console.log(eval(elements[index]. element));, он неверно возвращает p31/php/endpoint.php?get=opinions, но возвращает undefined. Я также попытался использовать eval(), чтобы оценить element от строки до исполняемого кода, но ничего.

Что я делаю неправильно? Благодаря

+1

Избегайте использования 'eval', если это возможно. – SeinopSys

+0

Это не очень хорошо разработанный способ хранения этих URL-адресов. Можете ли вы его изменить? Кроме того, вы никогда не должны использовать цикл 'for..in' на массивах ... используйте простой цикл' for'. – kapa

ответ

1

Использование

elements[index][element] 

Но это не просто то, что вы хотите?

elements[element] 

Кроме того, использование === вместо == ...

+0

Спасибо !!! Ты спас мой день! –

+0

Рад, что я мог помочь! Признание ответа приветствуется. –

Смежные вопросы