деконструкция объекта со стандартным деконструированным значением javascript

1

Я ищу краткий и эффективный способ достижения следующего:

Независимо от того, существует ли свойство в data или нет, переопределите его, если оно существует в overriders

fn(data = {}, overriders = {}) {

  data = {property: 2};

  let { property = data.property } = overriders;
  console.log(property); // = 2
}

Это работает, и это вполне нормально

Есть ли способ лучше? Я надеялся на что-то вроде этого:

fn(data = {}, overriders = {}) {

  data = {property: 2};
  overriders = {property: 9}

  let { property } = data || overriders;
  console.log(property); // = 9
}

(Я знаю, что это похоже на fallback но я искал что-то близкое к нему синтаксически)

  • 0
    Object.assign ?
Теги:
ecmascript-6
object

2 ответа

1
Лучший ответ

function fn(data = {property: 2}, overriders = {property: 9}) {
  let { property } = {...data, ...overriders};
  console.log(property); // = 9
}

fn();
  • 0
    Ответы как вашего, так и @Crisoforo Gaspar попали в чарты, но ваши ответы еще более лаконичны, поэтому помечены
2

Вы можете использовать деструктуризацию объекта.

function changeData( data = {}, overrides = {} ) {
  return { ...overrides, ...data }; 
}

console.log( changeData( { property: 2 }, { property: 9, a: 1, b: 2 }) ) ;

Дополнительная информация

  • 0
    Потрясающие! благодарю вас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню