Постоянно се сблъсквам с добавянето на условни свойства към обект по елегантен начин, но винаги трябва да направя:
var a = {};
if (someCondition) {
a.b = 5;
}
Съжалявам, но това ме притеснява!
С подобренията, които ES6 донесе на добрия стар Object, трябва да има по-добър начин? Оказва се, че 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
!