@AndrewRusinas

Можно ли вытащить поля из объекта, основываясь на массиве строк?

// Объект
const obj = {
   a: 1, b: 2, c: 3, d: 4, e: 5
}

// Массив названий полей, которые нам нужны
const arrayOfRequiredFields = [ 'a', 'b', 'd' ]

// хочется получить такой результат
// То есть отдельные переменные, но чтобы не было дублирования названий обязательных полей
const { a, b, d } = obj


Да, вполне рабочий и приемлемый вариант, но интересно, можно ли избежать дублирования и сделать код лаконичнее
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 2
mazhekin
@mazhekin
Frontend, Backend Web Developer
// Объект
const obj = {
   a: 1, b: 2, c: 3, d: 4, e: 5
}

// Массив названий полей, которые нам нужны
const arrayOfRequiredFields = [ 'a', 'b', 'd' ]


const resObj = Object.keys(obj).reduce(
 (acc, key) => arrayOfRequiredFields.some(field => field === key) ? {...acc, key: obj[key]} : acc
, {});
Ответ написан
Комментировать
@davidnum95
const newObj = arrayOfRequiredFields.reduce((result, key) => ({...result, [key]: obj[key]}), {});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы