Вывести объект со свойствами, которые совпадают с ключами массива
Должен получить на выходе следующее:
console.log(pickProps({ a: 1, b: 2, c: 3 }, ['a', 'c'])); // ==> { a: 1, c: 3 }
console.log(pickProps({ a: 1, b: 2, c: 3 }, ['a', 'c', 'd', 'hex'])); // ==> { a: 1, c: 3 }
Мне нужно в задачке использовать для перебора свойств объекта цикл for..in. Можно как-то одной строкой сравнить свойства объекта и ключи массива чтобы получить нужный объект?
const pickProps = (obj, props) => {
let resultObj = {};
for (let key in obj) {
resultObj = .....
}
return resultObj;
};
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
В данном случае задача сводится к свертке массива. Это реализуется при использовании метода .reduce
props.reduce((acc, cur)=>{
if (cur in obj) { // если поле есть в объекте
acc[cur] = obj[cur]; // записываем в результат
}
return acc;
},
{}) // начальное значение пустой массив
Точно так же можно реализовать с помощью обычного цикла
const pickProps = (obj, props) => {
let resultObj = {};
for (let i = 0; i < props.length; i++) {
const cur = props[i];
if (cur in obj) {
resultObj[cur] = obj[cur]
}
}
return resultObj;
};
console.log(pickProps({
a: 1,
b: 2,
c: 3
}, ['a', 'c'])); // ==> { a: 1, c: 3 }
console.log(pickProps({
a: 1,
b: 2,
c: 3
}, ['a', 'c', 'd', 'hex'])); // ==> { a: 1, c: 3 }