2013-09-19 7 views
1

Я строй объекта динамически, как это:JavaScript: перебрать свойство объекта

scope.filters[scope.col.field] = { value: scope.filterValue, operator: scope.filterOperator }; 

где scope.col.field является строкой.

Затем, как мне пройти через scope.filters, чтобы получить доступ к значению и оператору для различных свойств?

ответ

2

Вот простой пример:

for (var fieldName in scope.filters) { 
    if (!scope.filters.hasOwnProperty(fieldName)) { 
     alert(fieldName + ": " + scope.filters[fieldName]); 
    } 
} 

for..in будет проходить через все членов объекта.

Лучше всего всегда проверять, что переменная является ее собственным членом, поэтому вы не берете никаких других унаследованных функций или членов. Here - хорошее объяснение и пример того, почему вы должны использовать hasOwnProperty.

Я только что настроил предупреждение, но вы можете делать все, что вам нужно, с каждым fieldName и его значением. Обратите внимание: в этом случае вы получите много предупреждений.

+0

спасибо, что отлично работает – Sam

2

Я думаю, что вы ищете оператора in в сочетании с петлей for. Проверьте MDN

или попробовать, как это: -

for (var property in object) { 
    if (object.hasOwnProperty(property)) { 
     // do stuff 
    } 
} 

В вашем случае: -

for (var fieldName in scope.filters) { 
if (scope.filters.hasOwnProperty(fieldName)) 
{ 
//..... 
} 
Смежные вопросы