Лучший способ создания объекта с каждым ключом, равным нулю?

Поэтому в моем проекте React у меня есть запасное состояние по умолчанию для формы адреса, которая выглядит следующим образом:

state = {
  newLocation: this.props.location || {
    lat: null,
    lng: null,
    street: null,
    complement: null,
    neighbourhood: null,
    city: null,
    state: null,
    zipCode: null,
    country: null,
  },
}

Тем не менее, довольно нелепо определять такой большой объект со всеми ключами, равными нулю. Есть ли более короткий способ сделать это? Что-то в ES6/ES7?

2 ответа

Решение

Вы можете использовать массив, итерировать ключи и создать новый объект с Object.assign.

var keys = ['lat', 'lng', 'street', 'complement', 'neighbourhood', 'city', 'state', 'zipCode', 'country'],
    loc = { lat: 123, lng: 246, city: 'NY', country: 'USA' },
    state = {
        newLocation: Object.assign(keys.reduce((o, k) => Object.assign(o, { [k]: null }), {}), loc)
    };

console.log(state);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Используйте метод defaultProps

defaultProps может быть определено как свойство самого класса компонента, чтобы установить реквизиты по умолчанию для класса. Это используется для неопределенных реквизитов, но не для пустых реквизитов. Например:

class CustomButton extends React.Component {
  // ...
}

CustomButton.defaultProps = {
  color: 'blue'
};
Другие вопросы по тегам