@AndrewRusinas

Можно ли добиться деструктуризацией в javascript следующего результата?

// Допустим, есть такой объект
const obj = {
    first: 123,
    second: 154,
    third: 654,
    fourth: 993
}

// Я хочу получить на выходе объект, который содержал бы в себе только некоторые поля из obj
// То есть вот так
const customObj = {
    second: 154,
    third: 654
}

// Если применить деструктуризацию, то получим независимые переменные
const { second, third } = obj

// И затем мы можем их положить в новый объект, так же весьма лаконично благодаря ES6+
const customObj = { second, third }


Но выходит очень многословно. Можно ли сделать короче?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вы правильно рассуждаете в вопросе, осталось записать в одну строку:
const customObj = (({ second, third }) => ({ second, third }))(obj);


test
const obj = {
    first: 123,
    second: 154,
    third: 654,
    fourth: 993
};
const customObj = (({ second, third }) => ({ second, third }))(obj);

customObj // { second: 154, third: 654 }
Ответ написан
Комментировать
Scorpi
@Scorpi
const obj = {
    first: 123,
    second: 154,
    third: 654,
    fourth: 993
};

// Например так, с помощью удаления ненужных свойств

delete obj.first;
delete obj.fourth;

// Или так, используя оператор rest

const {first, fourth, ...customObj} = obj;

// или так (с помощью библиотеки lodash)

const customObj = _.pick(obj, ['second', 'third'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы