【问题标题】:Setting attribute value of object inside array using _.find使用 _.find 设置数组内对象的属性值
【发布时间】:2015-10-25 14:32:11
【问题描述】:

我很确定有更好的方法来做到这一点。在下面的代码中,我试图在 selected_items 数组中设置 item 对象的值。我发现使用 '=' 而不是 '==' 会返回找到的对象的更改版本(我发现在我的代码的其他部分有用的行为)。

这是个好主意吗?我真的很想知道使用 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');
        }
    }
}

通过上述方法,我正在尝试设置具有特定id的项目的数量。

【问题讨论】:

  • 这看起来像是一个可怕的维护问题,因为阅读它没有意义。为什么不简单地遍历原始数组并更改值?
  • 你能提供想要的输入和想要的输出吗?
  • 现在你改变了整个问题。那是不对的!不要再把问题变成一个移动的目标,也不要让基于你最初拥有的答案无效。
  • 是的,这个问题甚至不再有意义...您谈论的是 === 但现在您将其更改为 +=...再一次,您没有你正在做的事情不需要 lodash。只需使用普通的 JS。
  • 现在投票结束,因为这个问题没有任何意义。描述和代码不匹配

标签: javascript angularjs lodash


【解决方案1】:

简单的香草js

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

【讨论】:

  • 是的。你不需要 lodash 来做这个……它只会让事情复杂化。
猜你喜欢
  • 2015-02-12
  • 2023-03-26
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多