Как проверять объект на пустоту

131
27 октября 2019, 23:00

var salaries = { 
  "Вася": 100, 
  "Петя": 300, 
  "Даша": 250 
}; 
 
function maxsalary(obj){ 
	var sum = 0; 
 
	for(var key in salaries){ 
		if(sum < salaries[key]){ 
			sum = salaries[key] 
		} 
	} 
	var d = sum + ' ' + key; 
	return d; 
} 
console.log(maxsalary(salaries));

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

Если объект пустой, то пусть он выводит «нет сотрудников».

Не знаю как сделать чтобы выводила «нет сотрудников», если объект пустой

Answer 1
var salaries = {
  "Вася": 100,
  "Петя": 300,
  "Даша": 350
};
function maxsalary(obj){
    var max = null,name ='';
    for(key in salaries){
        if (max <= salaries[key]) {
            max = salaries[key];
            name = key;
        }
    }
    return name ? max + ' ' + name : 'нет сотрудников';
}
console.log(maxsalary(salaries));
Answer 2

Достаточно задать значение по умолчанию для d, перед циклом.

В этом случае, если объект пустой, в цикл не зайдет и значение d не изменится.

Кроме того, в функции сейчас не используется переданный параметр, а используется глобальная переменная. Это тоже нужно исправить.

Пример:

var salaries = { 
  "Вася": 100, 
  "Петя": 300, 
  "Даша": 250 
}; 
 
var salariesEmpty = {}; 
 
function maxsalary(obj) { 
  var sum = 0; 
  var d = 'нет сотрудников'; 
 
  for (var key in obj) { 
    if (sum < obj[key]) { 
      sum = obj[key]; 
      d = sum + ' ' + key; 
    } 
  } 
  return d; 
} 
console.log(maxsalary(salaries)); 
console.log(maxsalary(salariesEmpty));

Answer 3
function maxsalary(obj){
    var t = Object.keys(salaries).length == 0;
    var sum = 0;
    [salaries].filter((v, i, e) => {
        cobst arr = [];
        const keys = Object.keys(obj);
        for(const key of keys) {
            arr.push(v[key]);
        }
        const max = arr.sort().reverse()[0];
        sum = max;
        return v;
    })
    return t ? 'Нит никаво' : sum; 
}
READ ALSO
Почему код не срабатывает, хотя он написан с соблюдением разных стандартов (ECMAScript)?

Почему код не срабатывает, хотя он написан с соблюдением разных стандартов (ECMAScript)?

Почему код не срабатывает, хотя он написан с соблюдением разных стандартов (ECMAScript) ? Вот код:

118
Не работает вывод данных с API RandomUser

Не работает вывод данных с API RandomUser

Нужно выводить рандомно данные с сайта https://randomuserme/ , но что-то пошло не так, на ютубе смотрел как это делают, но у меня ругается консоль

104
Как активировать input radio после preventDefault?

Как активировать input radio после preventDefault?

Добрый вечер уважаемые программисты! Помогите плиз разобраться с input preventDefaultЕсть таблица

133
Как назвать файл для перехода по ссылке?

Как назвать файл для перехода по ссылке?

Когда я выбираю 3 пункта и нажимаю кнопку меня перебрасывает на адрес, я хочу что бы под этим адресом была страница, но я не понимаю как мне...

135