Javascript 如何将值精确地加1或减1

Javascript 如何将值精确地加1或减1,javascript,arrays,json,angularjs,Javascript,Arrays,Json,Angularjs,我在数组中有一些值。假设我在facebook中使用的“喜欢”和“不喜欢”选项的值。用户只能给出1个喜欢或1个不喜欢。如果不喜欢,喜欢变为0,如果喜欢,不喜欢变为0 喜欢和不喜欢的数字不应给出负值-ve值应四舍五入为0 对于like=24和dislike=0:用户只能选择一次like或dislike。i、 例如,当选择like时,like为25,loke保持为0。如果选择了“不喜欢”,则“喜欢”变为24,“不喜欢”保持为0。但值24根本不应该达到26 对于like=0和厌恶=15:当用户选择lik

我在数组中有一些值。假设我在facebook中使用的“喜欢”和“不喜欢”选项的值。用户只能给出1个喜欢或1个不喜欢。如果不喜欢,喜欢变为0,如果喜欢,不喜欢变为0

  • 喜欢和不喜欢的数字不应给出负值-ve值应四舍五入为0
  • 对于like=24和dislike=0:用户只能选择一次like或dislike。i、 例如,当选择like时,like为25,loke保持为0。如果选择了“不喜欢”,则“喜欢”变为24,“不喜欢”保持为0。但值24根本不应该达到26
  • 对于like=0和厌恶=15:当用户选择like时,like变为1,厌恶变为14。同样,如果选择了“不喜欢”,则“不喜欢”变为15,“喜欢”变为0
  • 对于like=32和厌恶=12:如果用户选择like,like变为33,厌恶变为11。同样,如果用户选择厌恶,厌恶变为12,喜欢变为32。现在,如果用户选择like,like变为11,反之亦然。如何做到这一点?请帮忙
  • //代码

    <li ng-repeat="employee in data.employees">
                <button ng-click="like();">Like</button>
    
                 {{employee.x}}
    
                <button ng-click="dislike()">Dislike</button>
    
                 {{employee.y}}
              </li>
    
  • 喜欢 {{employee.x} 不喜欢 {{employee.y}

  • 您可以在相同的
    ng单击添加和减去喜欢的处理程序中,向每个
    员工添加
    喜欢的
    不喜欢的
    属性

    $scope.like = function(employee){
      employee.x = parseInt(employee.x) + 1;
      if (parseInt(employee.y) > 0)      
        employee.y = parseInt(employee.y) - 1;
      employee.liked = true;
      employee.disliked = false;
    }
    
    $scope.dislike = function(employee){
      if (parseInt(employee.x) > 0)      
        employee.x = parseInt(employee.x) - 1;
      employee.y = parseInt(employee.y) + 1;
      employee.liked = false;
      employee.disliked = true;
    }
    
    然后,
    ng disabled
    可以防止额外的点击

    <li ng-repeat="employee in data.employees">
      <button ng-click="like(employee)" ng-disabled="employee.liked">Inc</button>
      like: {{employee.x}}
    
      <button ng-click="dislike(employee)" ng-disabled="employee.disliked">Dec</button>
      dislike: {{employee.y}}
    </li>
    
  • 股份有限公司 比如:{{employee.x} 12月 不喜欢:{{employee.y}
  • 现在可以用了

      <li ng-repeat="employee in data.employees">
        <button ng-disabled="employee.edited" ng-click="like($index);">Inc</button>
        like: {{employee.x}}
    
        <button ng-disabled="employee.edited" ng-click="dislike($index)">Dec</button>
         dislike: {{employee.y}}
      </li>
    

    对于编辑后的代码

    您是否真的在问如何处理
    x=x+1
    y=y-1
    ?好吧,您需要将“喜欢”/“不喜欢”与用户联系起来。因此,每个
    employee
    记录都应该有一个喜欢/不喜欢的用户列表,对于当前用户,您需要检查用户是否已经喜欢或不喜欢某个特定的员工,并相应地处理其他喜欢/不喜欢的人员。无论如何,这不是一个角度问题。@NewDev忘记每个用户,我只需要在我的角度应用程序中使用这些值进行计算。只是为了呈现。不在任何数据库中存储这些值。只在客户端。谢谢你。然后,你需要为每个
    员工记录关于当前用户是否投票以及如何投票的额外信息,并相应地为你的
    like()
    dislike()
    函数编码。您还可以考虑添加<代码> CANLUTE()/<代码>和<代码> CANDISTIONE()/<代码>启用/禁用按钮。DUPE:请您给这个回答谢谢。希望你得到你想要的答案
     $scope.data = {"employees":[
        {"x":"0", "y":"0", 'edited':false}, 
        {"x":"24", "y":"0", 'edited':false}, 
        {"x":"0", "y":"15", 'edited':false}, 
        {"x":"32", "y":"12", 'edited':false}, 
    ]};
    
    
    function like(index){
      $scope.data.employees[index].edited = true;
      $scope.data.employees[index].x = parseInt($scope.data.employees[index].x) + 1;   
      if(parseInt($scope.data.employees[index].y) !== 0)
        $scope.data.employees[index].y = parseInt($scope.data.employees[index].y) - 1;
    
    }
    
    function dislike(index){
      $scope.data.employees[index].edited = true;
      if(parseInt($scope.data.employees[index].x) !== 0)
        $scope.data.employees[index].x = parseInt($scope.data.employees[index].x) - 1; 
      $scope.data.employees[index].y = parseInt($scope.data.employees[index].y) + 1;  
    }