如何使用Angular.js中的某个唯一值从数组中删除值

时间:2016-01-23 10:15:16

标签: javascript angularjs

我需要一个帮助。我需要通过匹配值从数组中删除一组数据。我正在解释下面的代码。

$scope.listOfUser = [
            {name:'Name123', value:'Name123V_value'},
            {name:'Name321', value:'Name321_value'},
             {name:'Name474', value:'Name474_value'},
          ];

这里我有3组值。用户将匹配name==Name474特定行将从该数组中删除。请帮助我。

3 个答案:

答案 0 :(得分:1)

在控制器中试试

angular.forEach($scope.listOfUser, function(value, key){
  if($scope.listOfUser[key].name=='Name123'){
     $scope.listOfUser.splice(key,1);
  }
})

答案 1 :(得分:1)

试试这个demo on jsfiddle

HTML

<div ng-app="app">
  <div ng-controller="ctrl as vm">
    <input type="text" ng-model="vm.itemToDelete">
    <button ng-click="vm.onDeleteClick()">Delete</button>
    <ul>
      <li ng-repeat="item in listOfUser">
       {{ item.name}}
      </li>
   </ul>
  </div>
</div>

JS

angular.module('app', [])
.controller('ctrl', function($scope) {
  var vm = this;

  $scope.listOfUser = [{
    name: 'Name123',
    value: 'Name123V_value'
  }, {
    name: 'Name321',
    value: 'Name321_value'
  }, {
    name: 'Name474',
    value: 'Name474_value'
  }, ];

  vm.onDeleteClick = function() {
    var i = 0;
    for (i; i < $scope.listOfUser.length; i++) {
      if ($scope.listOfUser[i].name === vm.itemToDelete) {
        $scope.listOfUser.splice(i, 1);
        break;
       }
    }
  };
});

答案 2 :(得分:0)

您可以使用过滤器返回另一个没有该值的数组,所以沿着以下几行:

$scope.filteredListOfUsers = $scope.listOfUser.filter(function(user) {
    return !/Name474/.test(user.value);
});

最佳!