Я постоянно сталкиваюсь с элегантным добавлением условных свойств к объекту, но всегда приходится делать следующее:
var a = {};
if (someCondition) {
a.b = 5;
}
Извините, но меня это беспокоит!
Должен быть способ лучше, учитывая улучшения, внесенные ES6 в старый добрый объект? Оказывается, spread operator
парень.
const a = {
...someCondition ? {b: 1} : {}
}
Теперь, если… someCondition = true
мы получим a= {b: 1}
И если… someCondition = false
мы получим только a= {}
Мы все еще можем улучшить это синтаксически, используя логический оператор И ...
const a = {
...someCondition && {b: 1}
}
Вот и все. При использовании оценки короткого замыкания {b: 1}
будет распространяться на a
, только если someCondition
оценивается как true
. Если someCondition
равно false
, возвращается someCondition
, а значение false
вообще не распространяется на a
!