Перебор свойств в объектах

Перебор свойств в объектах

Здравствуйте! На прошлом уроке мы с вами рассмотрели что такое объекты и зачем они нужны, а сегодня разберем как работать со свойствами объекта и как собственно все эти свойства перебирать. Для этих целей используется цикл по свойствам for..in (почитать про циклы в JavaScript можно здесь).

Перебор свойств объекта

Цикл for..in

Синтаксис:

for (key in obj) {
  /* ... действия  с obj[key] ... */
}

Цикл  for..in последовательно  будет перебирать свойства объекта obj, имя каждого свойства запишет в key.

Объявление переменной в цикле for (var key in obj)

В данном цикле  можно объявить переменную key:

            for (var key in menu1) { // ... }

Давайте рассмотрим пример перебора свойств объекта, используя цикл for…in:

var menu = {
  width: 400,
  height: 300,
  title: "Menu My"
};
for (var key in menu) {
  // этот код сработает для каждого свойства объекта
  // ..и выведет соответственно имя свойства и его значение

  alert( "Ключ: " + key + " значение: " + menu[key] );
}

Хочу обратить ваше внимание, что в примере были использовали квадратные скобки menu[key]. Это потому что, если имя свойства мы храним в переменной, то и обратиться к нему можно только через квадратные скобки, но не через точку.

Цикл for…of

Также появился новый цикл по обходу объектов и массивов. Его синтаксис очень напоминает цикл for…in, а различия в том, что он выводит не ключи или индексы массива, а его значения. Вот пример:

var menu = {
  width: 400,
  height: 300,
  title: "Menu My"
};
for (var key of menu) {
  // этот код сработает для каждого свойства объекта
  // ..и выведет соответственно  значение свойства

  alert( "значение: " + key +"," ); //400, 300, "Menu My"
}

 

Количество свойств в объекте

А что, если вам надо узнать количество свойств в объекте? Как это можно сделать?

Читайте также  Явное указание this: методы "call", "apply"

К сожалению готовых решений  для этого вопроса  нет.

Самый простой способ —  это сделать цикл по свойствам и посчитать следующим образом:

var menu = {
  width: 400,
  height: 300,
  title: "Menu My"
};
var count = 0;
for (var key in menu) {
  count++;
}
alert( "Всего свойств: " + count);

Итоги

  • Для перебора свойств  объекта  используется цикл по ключам: for (key in obj).

Задачи

Определите, пуст ли объект

Создайте функцию isEmptyObject(obj), которая возвращает true, если в объекте нет свойств и false – если хоть одно свойство есть.

Работать должно так:

function isEmptyObject(obj) {
  /* ваш код */
}
var obj = {};
alert( isEmptyObject(obj) ); // true
obj["8:30"] = "подъём";
alert( isEmptyObject(obj) ); // false

Подсчитайте среднее арифметическое всех свойств обїекта

Есть объект salary с зарплатами. Напишите код, который выведет среднее арифметическое по всем зарплатам.
Если объект пустой, то результат должен быть 0.
Например:

var salaries = {
  "Вася": 100,
  "Петя": 300,
  "Даша": 250
};

Свойство с наименьшим значением>

Есть объект salary с зарплатами. Напишите код, который выведет имя сотрудника, у которого самая маленькая зарплата.
А Если объект пустой, то он выводит «нет сотрудников».

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Плюсануть
Поделиться

Об авторе

admin administrator

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: