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

174
11 мая 2019, 01:10

var schedule = { 
  name: "Петя", 
  user: 'Root', 
  password: 333, 
  age: 20 
}; 
 
 
function isEmpty(obj) { 
  for (var key in schedule) { 
    return console.log(false); 
  } 
  return console.log(true); 
} 
isEmpty(schedule);

Правильное решение или можно, но это не значит, что нужно так делать ?

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

Answer 1
function isEmpty(obj) {
  return Object.keys(x).length === 0;
}
Answer 2

Решение неверное, так как всегда возвращает undefined.

Вместо этого нужно возвращать результат:

var schedule = { 
  name: "Петя", 
  user: 'Root', 
  password: 333, 
  age: 20 
}; 
 
 
function isEmpty(obj) { 
  for (var key in schedule) { 
    return false; 
  } 
  return true; 
} 
console.log(isEmpty(schedule));

Кроме этого не совсем ясен момент с присутствием свойств в прототипе объекта, если они не должны учитываться, то нужно добавить дополнительную проверку с hasOwnProperty

Альтернативным решением может быть использование Object.keys либо Object.entries, однако в этом случае вместо простой проверки наличия, сначала будет получен список всех свойств и лишь затем проверка его длины.

Еще один подводный камень: наличие в объекте не перечисляемых свойств.

Если их наличие так же должно учитываться, вместо for..in или Object.keys нужно воспользоваться Object.getOwnPropertyDescriptors

READ ALSO
Нужен очень резко дать стили предыдущую и следующую элементу слайдера slick

Нужен очень резко дать стили предыдущую и следующую элементу слайдера slick

Хочу получить эффект закруглённости поэтому нужен пока слайдер крутиться дать уже стилино для этого нужен быстро узнать предыдущую и следующую...

126
javascript в jsp

javascript в jsp

Есть у меня JSP страница, на которой есть таблица:

153
Получить timestamp или дату с time100.ru JS или AJAX

Получить timestamp или дату с time100.ru JS или AJAX

Необходимо получить стороннее время с сервера http://time100ru

173