У меня есть следующий массив объектов 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);
};
Но это не работает !!
Вам не хватает закрывающей фигурной скобки в конце цикла 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);
}
});
При перемещении по массивам 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);
}
Измените свой код на следующее. Он работает правильно.
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 - с большей проверкой.
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';
}
}
}
}
}
Подход: 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
попробуй это
for (var index in employees) {
var tp = employees[index];
console.log(tp['yourkeyhere']);
}