0

I need to remove one set of data from an array by matching the value. My code is below:

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

Here I have 3 set of value. While user will match name==Name474 that particular row will remove from that array.

halfer
  • 18,701
  • 13
  • 79
  • 158
satya
  • 3,282
  • 6
  • 37
  • 104

3 Answers3

1

Try this in controller

angular.forEach($scope.listOfUser, function(value, key){
  if($scope.listOfUser[key].name=='Name123'){
     $scope.listOfUser.splice(key,1);
  }
})
AlainIb
  • 3,925
  • 3
  • 28
  • 52
Mahantesh Kumbar
  • 255
  • 1
  • 10
1

Try this 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;
       }
    }
  };
});
ofir fridman
  • 2,244
  • 2
  • 14
  • 21
0

You could return another array without that value by using filter, so something along these lines:

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

Best!

R.A. Lucas
  • 1,029
  • 1
  • 12
  • 17