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
  • 19,824
  • 17
  • 99
  • 186
satya
  • 3,508
  • 11
  • 50
  • 130

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
  • 4,544
  • 4
  • 38
  • 64
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,691
  • 2
  • 17
  • 27
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,121
  • 1
  • 12
  • 17