угловой, как отобразить ключ в массиве JSON

0

У меня есть следующий массив объектов 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);
       };

Но это не работает !!

Теги:
arrays

5 ответов

2
Лучший ответ

Вам не хватает закрывающей фигурной скобки в конце цикла for, это должно быть:

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

демонстрация

Тем не менее, вы можете использовать угловой.forEach, а именно:

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

демонстрация

  • 0
    большое спасибо :)
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

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

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);
           };
   }
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 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);   
       }
    }

Редактировать:

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

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

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

  • 0
    Вы должны рассмотреть развязку каждого для, у вас сложность 1n (1 для большого количества форов), вы можете создать карту, если вы хотите выполнить итерации через объекты внутри объекта, но в этом случае нет необходимости делать это. равнина для Object.keys должна работать идеально.
  • 0
    но не работает !!
Показать ещё 4 комментария
1

попробуй это

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню