Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Js数组长度过早增加_Javascript_Arrays_Angularjs - Fatal编程技术网

Javascript Js数组长度过早增加

Javascript Js数组长度过早增加,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有一个基于条件的数组长度。我的问题是数组没有在正确的时间增加。 很难解释,因此我制作了一个plunker和示例代码: 当我第二次单击push时,我希望警报为“gt 1”。 我怎样才能解决这个问题?也许是柜台什么的 <div ng-repeat="user in data"> <a ng-click="pushUser(user)">push</a> </div> app.controller('MainCtrl', function(

我有一个基于条件的数组长度。我的问题是数组没有在正确的时间增加。 很难解释,因此我制作了一个plunker和示例代码:

当我第二次单击push时,我希望警报为“gt 1”。 我怎样才能解决这个问题?也许是柜台什么的

<div ng-repeat="user in data">
     <a ng-click="pushUser(user)">push</a>
</div>

app.controller('MainCtrl', function($scope) {
  $scope.users = [];

  $scope.data = [{name: 1} ,{name: 2}, {name:3}];

  $scope.pushUser = function(user) {

    if($scope.users.length > 1) {
      alert('gt 1');
      $scope.users.push(user);
    } else {
      alert('lt 1');
      $scope.users.push(user);
    }  
  }
});

按下,然后检查:

$scope.users.push(user);

if($scope.users.length => 1) {
  alert('gt 1');      
} else {
  alert('lt 1');
} 

由于数组
users
的初始长度为0,因此当您第一次单击时,条件
if($scope.users.length>1)
将计算为false。因此,else部分将在
user
数组中添加一个元素

第二次,当您单击链接时,条件
if($scope.users.length>1)
仍将被评估为false,因为数组的长度等于
1
,而不是
>1
。因此,else部分仍将被执行,并将导致
user
数组的长度增加到2


随后的单击将导致警报显示为
gt 1
。因此,如果($scope.users.length>=1),您应该将条件更改为
。注意:运算符已更改,以指示数组长度是否大于或等于1,这在您第二次单击链接时是正确的。

我不能在if内执行操作,然后按。if($scope.users.length>=1){-?您可能是指当我第三次单击push时,我希望警报为“gt 1”。而不是第二次。