2015-07-03 24 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循环,它应该是:

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

编辑:

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

Objectprototypekeys,返回keysArrayObject

铬,FF & Safari支持Object.keys

+0

你应该考虑分离为每一个,你有一个1n的复杂性(1很多维权的),如果你想要遍历槽,你可以创建一个映射的OBJ对象内,但在这种情况下,没有必要这样做。一个用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); 
      }; 
    }