簡體   English   中英

如果不在數組中,則將項目添加到數組

[英]Add Item to Array If Not In the Array

每次我單擊“添加項目”按鈕時,它都會反復將item添加到items數組中。 例如,如果我單擊“添加項目”五次,數組為:

items: [item, item, item, item, item]

如何修改代碼以添加第一item但不將其他item添加到數組,如下所示:

items: [item]

我嘗試將var i = -1替換為var i = 0但從未將item添加到items數組。

這是我的看法:

<body ng-controller="MainCtrl">
  <button ng-click="addItem()">Add {{item}}</button>
  <p>items: {{items | json}}</p>
</body>

...和控制器:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.item = 'item';
  $scope.items = [];
  $scope.addItem = function () {
    for (var i = -1; i < $scope.items.length; i++) {
        if ($scope.items[i] != $scope.item) {
          $scope.items.push($scope.item);
        }
    }
  };
});

這是我的Plunker: http ://plnkr.co/edit/OT900pXEcxGgkpJZna2x?p=preview

添加一個簡單的驗證

addItem() ,使用indexOf添加一個簡單的驗證來檢查項目是否在數組中:

$scope.addItem = function () {

    if ($scope.items.indexOf($scope.item) != -1){
      // The item is already in the array, abort!
      return;
    }

    $scope.items.push($scope.item);
}

http://plnkr.co/edit/GKtREKBXUD7J54oxTaDq?p=預覽

這是您的plunkr的分叉版本。

它使用indexOf ,它是一個內置函數,用於判斷數組是否包含元素 (當找不到該元素時 ,它返回-1):

$scope.addItem = function () {
  if($scope.items.indexOf($scope.item) === -1){
      $scope.items.push($scope.item);
  }
};

我不確定您要嘗試通過引用$scope.items[-1]來實現什么,需要詳細說明嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM