Как условно изменить значение свойства объекта лучшим способом, чем это решение в JS?

#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 тогда вам нужно сделать это в другой строке (см. Мой ответ)