#javascript #loops #object
#javascript #циклы #объект
Вопрос:
У меня есть вложенный объект, как в примере ниже.
var posts = {
"post1": {
"slug": "slug1",
"title": "title1",
},
"post2": {
"slug": "slug2",
"title": "title2",
}
};
Я пытаюсь написать цикл for / in, который позволит мне выполнять итерации по этому объекту.
var testLoop = function () {
for (var prop in posts){
post = prop;
console.log(post); // Outputs post1 and post2
console.log(post.slug); // Outputs undefined
}
}
Как видно выше, я не могу сохранять и позже получать доступ к свойствам каждого итерированного объекта. Сохраняется и регистрируется только имя объекта. Когда я запускаю typeof, я вижу, что это даже не объект, это просто строка.
Как я могу правильно сохранять все повторяющиеся свойства в виде объектов (post1, post2 и т.д.) Во время цикла, Чтобы я мог получить доступ к их свойствам, используя точечную нотацию?
Комментарии:
1.
posts[prop].slug
2. Вы можете прочитать о
for..in
и узнать, что он делает.
Ответ №1:
Когда вы используете
for (var prop in posts){ ... }
Он перебирает строковые ключи в posts
объекте.
Главное здесь в том, что prop
это будет строка, а не объект, который ожидает ваш текущий код.
Как предположили пользователи в комментариях, поскольку prop
ключ объекта представлен в виде строки, вам нужно использовать posts[prop]
для ссылки на фактический объект.
Вот немного обновленный код.
var testLoop = function () {
for (var prop in posts){
post = posts[prop]; // ** this is line that needs to be modified **
console.log(post); // Outputs post object
console.log(post.slug); // this should work now
}
}