Перебір обєкта JSON за допомогою циклу for in..

19

Від автора: у звичайних масивах можна використовувати цикл for. Об’єкти JSON ж відрізняються від звичайних масивів тим, що кожна клітинка містить у собі пару властивість і значення. Щоб отримати ці складові масиву і звертатися до них окремо найчастіше потрібен інший підхід. Цикл for..in – один з таких підходів.

Хорошим прикладом послужить створений мною в попередній статті об’єкт CSS квітів. JSON масив починається так:

var cssColors = {
«aliceblue»: «#f0f8ff»,
«antiquewhite»: «#faebd7»,
«aqua»: «#00ffff»,
«aquamarine»: «#7fffd4»,
«azure»: «#f0ffff»,

}

Щоб створити діаграму CSS квітів для тієї статті, мені потрібно було пройти в циклі по об’єкту: іншими словами, отримати перераховані властивості масиву. Це легко можна зробити за допомогою варіації циклу for з частинкою in:

for (var key in cssColors) {

}

Змінну key можна назвати як завгодно (будь-яке підходяще слово), в ній буде зберігатися властивість. Для виведення результату в консоль для тесту можна змінити скрипт:

for (var key in cssColors) {
console.log(key)
}

Ви отримаєте наступне:

aliceblue
antiquewhite
aqua
aquamarine
azure

Якщо ви хочете додати значення властивості висновок, можна додати кому та об’єкт з ключем:

for (var key in cssColors) {
console.log(key, cssColors[key])
}

Результат:

aliceblue #f0f8ff
antiquewhite #faebd7
aqua #00ffff
aquamarine #7fffd4
azure #f0ffff

На цій основі можна створити майже будь-яку конструкцію: подивіться приклад демо з іменованими CSS квітами на CodePen.

Неправильне використання та можливі обмеження

Особливість циклу for..in в тому, що він може перераховувати успадковані властивості, а не тільки ті, які ви очікуєте побачити в об’єкті. Захиститися від цього можна з допомогою тесту hasOwnProperty:

for (var key in cssColors) {
if (cssColors.hasOwnProperty(key)) {
… do something …
}
}

Дана умова перевіряє, присвоєно властивість безпосередньо об’єкту, і виводить його, якщо воно рідне. У циклу for..in можуть виникнути проблеми з масивами з порожніми слотами. Загальне правило – не варто додавати, видаляти або змінювати властивості в масиві під час його перебору.

JSON масив складається з безлічі об’єктів, і розглядати його потрібно трохи по-іншому. Більш детально про JSON масивах я розповім в наступній статті.