2015-07-03 2 views
0

У меня есть следующие JSON массив объектов:Угловая, как отобразить ключ в массиве JSon

"employees":[ 
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"}, 
    {"firstName":"Peter","lastName":"Jones"} 
] 

и я хочу, чтобы получить определенный ключ в JSON массива:

for (var ke in employees) { 
     if (employees.hasOwnProperty(ke)) { 
      console.log(employees[ke].lastName); 
     }; 

но это не Работа !!

ответ

2

Вы пропустили закрывающую фигурную скобку в конце вашего для петли, он должен быть:

for (var ke in employees) { 
    if (employees.hasOwnProperty(ke)) { 
     console.log(employees[ke].lastName); 
    }; 
} 

Demo

Однако, вы можете использовать angular.forEach, а именно:

angular.forEach(employees, function (ke) { 
    if(ke.lastName) { 
     console.log(ke.lastName); 
    } 
}); 

Demo

+0

спасибо большое :) – Cheps

1

попробовать это

for (var index in employees) { 
    var tp = employees[index]; 
    console.log(tp['yourkeyhere']); 
} 
2

При прохождении через Javascript массивов, используют стандартный for петлю, а не for...in.

for (var i=0; i < employees.length; i+=1) { 
    console.log(employees[i].lastname); 
} 

В качестве альтернативы, ES5 теперь предоставляет Array.forEach функцию, которая может быть использована как хорошо.

employees.forEach(function (employee) { 
    console.log(employee.lastname); 
} 
1

подход: 1 - С дополнительной проверки.

var employees= [ 
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"}, 
    {"firstName":"Peter","lastName":"Jones"} 
]; 

for(var obj in employees) { 
    if(employees.hasOwnProperty(obj)){ 
     for(var prop in employees[obj]){ 
      if(employees[obj].hasOwnProperty(prop)){ 
       alert(prop + ' : ' + employees[obj][prop]); 
       //to change the key's value 
       if(employees[obj][prop] == 'Smith'){ 
        employees[obj][prop]='Mike'; 
       } 
      } 
     } 
    } 
} 

Plunker

подход: 2 Без проверки (не рекомендуется)

for(i in employees) { 
     var obj = employees[i]; 
     for(j in obj) { 
      var key = j; 
      var val = obj[j]; 
      alert(key + " : " + val); 
     } 
    } 

Edit:

var employees={"firstName":"John", "lastName":"Doe"}; 
Object.keys(employees); // return ["firstName", "lastName"] 

Object имеет prototypekeys, возвращает Array из keys в Object

Chrome, FF & Safari поддерживает Object.keys

+0

Вы должны рассмотреть каждый отвязать для, вы испытываете сложности 1n (1 для многих ФОРС), вы можете создать карту, если вы хотите перебрать корыто Objs внутри объекта , но в этом случае нет необходимости в этом. равнина с Object.keys должна работать отлично. – ecarrizo

+0

но нет работа !! – Cheps

+0

Вы хотите изменить ключ или значение для lastName? –

1

Изменить код к следующему. Он работает правильно.

employees=[ 
     {"firstName":"John", "lastName":"Doe"}, 
     {"firstName":"Anna", "lastName":"Smith"}, 
     {"firstName":"Peter","lastName":"Jones"} 
    ] 
    for(var ke in employees) { 
      if (employees.hasOwnProperty(ke)) { 
       console.log(employees[ke].lastName); 
      }; 
    } 
Смежные вопросы