2015-07-03 26 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); 
      }; 
    }