использовать сокращение для присвоения свойств объекта - PullRequest
4 голосов
/ 21 июня 2020

Я использую следующий код

   function(props){

...
    this.props.appName = this.options.appName || this.props.appName;
          this.props.host = this.options.host || this.props.hos;
          this.props.endpoint = this.options.endpoint || this.props.endpoint;
          this.props.appPath = this.options.appPath || this.props.appPath;
    
       ....

Раньше я использовал or (||), я использовал что-то вроде

this.props = Object.assign(this.props, props);

У меня много полей, которые мне нужно назначить, есть ли способ сделать его короче?

Ответы [ 4 ]

1 голос
/ 21 июня 2020

Попробуйте следующее

var props={appName:'name', host:'host', appPath:'path'};
var options={appName:'UpdatedName', appPath:'pathUpdated'};

props = Object.keys(props).reduce((target, key) => {
  target[key] = options[key] || props[key];
  return target;
}, {});
console.log(props);
1 голос
/ 21 июня 2020

Вы можете использовать здесь spread operator, чтобы распаковать значения из другого объекта, оставив первое по умолчанию.

var props={appName:'name', host:'host', appPath:'path'};

var options={appName:'UpdatedName', appPath:'pathUpdated'};

props = {...props, ...options};

console.log(props);

ОБНОВЛЕНИЕ

В случае undefine, я думаю, вы можете перебирать объект, используя for..in l oop, чтобы урегулировать данные:

var props={appName:'name', host:'host', appPath:'path'};

var options={appName:'UpdatedName', host:undefined, appPath:'pathUpdated'};

for(let item in options){
  if(options[item]) props[item] = options[item];
}

console.log(props);
0 голосов
/ 21 июня 2020

Согласно вашему данному фрагменту вам просто нужно изменить параметр в Object.assign ().

this.props = Object.assign(this.props, this.options);

Это должно сработать для вас.

0 голосов
/ 21 июня 2020

Вы можете уничтожить:

  let {appName, host, endpoint, apPath} = this.props;
  let {appName: appNameOptions, host: hostOptions, endpoint: endpointOptions, apPath: appPathOptions} = this.options;

  appName = appNameOptions || appName;
  host = hostOptions || host;
  endpoint = endpointOptions || endpoint;
  appPath = appPathOptions || appPath;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...