Отфильтровать объект по условию и записать результат в новый объект
Нужно отфильтровать объект по условию что его значения больше или равно 18:
console.log(getAdults({ 'John Doe': 19, Tom: 17, Bob: 18}));
// Output: { 'John Doe': 19, Bob: 18 }
console.log(getAdults({ Franky: 7, Ann: 40 }));
// Output: { Ann: 40 }
Только начал учить объекты, но именно такой информации не нашел в интернете. Хочу разобраться как это работает пока что с помощью цикла for..in
const getAdults = obj => {
let filteredObj = {};
for (let key in obj) {
if (obj[key] >= 18) {
filteredObj = obj;
}
return filteredObj;
}
};
Помогите пожста исправить код чтобы условие выполнилось.
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
return сразу прерывает цикл и выходит из него. return надо ставить в конце метода. А вообще можно пойти по обратному пути: если значение меньше 18, то удалить ключ из объекта. Если хочется, чтобы объект не изменялся, то в начале метода, можно работать с копией
const getAdults = obj => {
for (let key in obj) {
if (obj[key] < 18) {
delete(obj[key]);
}
}
return obj;
};
console.log(getAdults({ 'John Doe': 19, Tom: 17, Bob: 18}));
В целом можно сделать так:
const getAdults = obj => {
let filteredObj = {};
for (let key in obj) {
if (obj[key] >= 18) {
filteredObj[key] = obj[key];
}
}
return filteredObj;
};
console.log(getAdults({ 'John Doe': 19, Tom: 17, Bob: 18}));