#javascript #ecmascript-6 #javascript-objects #ecmascript-5
#javascript #ecmascript-6 #javascript-объекты #ecmascript-5
Вопрос:
Исходя из условия, я изменяю значение объекта следующим образом. Есть ли лучший способ выполнить нижеприведенную проверку без дублирования частей?
if (this.selected.id === productId) {
this.obj1 = {
...this.product,
tags: this.selected.tags,
imgs: product.imgs,
}
} else {
this.obj1 = {
...this.product,
tags: this.selected.tags,
imgs: [],
}
}
Как вышеуказанное решение может быть более оптимизировано, например, с помощью? оператор со встроенным условием?
Или что-то вроде этого:
this.selected.id === productId ? imgs: product.imgs
иначе не добавляйте это свойство и значение
Ответ №1:
Да, это выглядит лучше, если вы используете встроенный троичный оператор и не повторяете остальную часть кода:
this.obj1 = {
...this.product,
tags: this.selected.tags,
imgs: this.selected.id === productId ? product.imgs: [],
}
Редактировать:
На случай, если вы не хотите ничего делать, когда условие не выполнено:
this.obj1 = {
...this.product,
tags: this.selected.tags
}
if(this.selected.id === productId){
this.obj1.imgs = product.imgs
}
Комментарии:
1. Спасибо за ответ, тогда что, если условие основано как на свойстве, так и на значении? Сработает ли это, если я попытаюсь изменить его для всей строки, допустим, если оно равно, тогда добавьте свойство product.imgs с его значением, еще добавьте неопределенное или что-то в этом роде?
2. Я добавил небольшой регистр в нижней части вопроса
3. @Dave тогда вам нужно сделать это в другой строке (см. Мой ответ)