2015-10-25 4 views
-2

Я уверен, что есть лучший способ сделать это. В приведенном ниже коде я пытаюсь установить значение объекта item внутри массива selected_items. Я обнаружил, что использование '=' вместо '==' возвращает измененную версию найденного объекта (поведение, которое я нашел полезным в других частях моего кода).Установка значения атрибута объекта внутри массива с использованием _.find

Это хорошая идея? Мне бы очень хотелось узнать более чистый способ сделать это с помощью lodash.

$scope.increase_item_quantity = function(item_pk, addition){ 
    if($scope.is_item_selected()){ 
     var item_quantity = $scope.get_item_quantity(); 
     if(!(item_quantity < 1 && addition == -1)){ 
      console.log('adding...') 
      $scope.selected_items = _.result(_.find($scope.selected_items, function(item) { 
        return item.quantity = addition; 
       }), 'quantity'); 
     } 
    } 
} 

По методу выше, я пытаюсь установить количество элемента с определенным идентификатором.

+1

Это выглядит как ужасная проблема обслуживания, потому что это не имеет смысла читать. Почему бы вам просто не перебрать исходный массив и изменить значения? – charlietfl

+0

Вы можете указать желаемый вход и желаемый выход? –

+0

Теперь вы изменили весь вопрос. Это неправильно! Не ставьте вопрос на движущуюся цель и недействительные ответы, основанные на том, что вы изначально имели. – charlietfl

ответ

3

Простой ванильный JS

$scope.selected_items.forEach(function(item){ 
    item.quantity = new_quantity; 
}); 
+0

Да. Для этого вам не нужен lodash ... это просто усложняет ситуацию. –

Смежные вопросы