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

324

Від автора: у звичайних масивах можна використовувати цикл 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 масивах я розповім в наступній статті.