Angular - Filter to remove blank strings from array

后端 未结 4 519
甜味超标
甜味超标 2021-01-16 01:46

I have an object of arrays... The array can contain blanks, how can i create an ANgular filter to remove the blanks to determine the length of the array?

$sc         


        
相关标签:
4条回答
  • 2021-01-16 02:21

    At first I want to note, that your JS object is invalid.

    Please, use the array of arrays instead of object of arrays in this case.

    $scope.myData = [
       ["1", "2", "3", "4", "5", "6", "7", "8", "9", "", "", "", "", "", "", "", "", "" ],
       ["1", "2", "3", "4", "5", "6", "7", "8", "", "", "", "", "", "", "", "", "", "" ],
       ["1", "2", "3", "4", "5", "6", "7", "", "", "", "", "", "", "", "", "", "", "" ],
       ["1", "2", "3", "4", "5", "6", "", "", "", "", "", "", "", "", "", "", "", "" ]
    ];
    

    And secondly i've created filter to remove the blank items.

    .filter('removeBlankItems', function() {
        return function(inputArray) {
          var outArray = [];
          for (var i = 0; i < inputArray.length; i++) {
              if(inputArray[i].length != 0){
                 outArray.push(inputArray[i]);     
              }
          }
          return outArray;
        };
    })
    

    This is JSFiddle with working example.

    0 讨论(0)
  • 2021-01-16 02:23

    var app = angular.module('app', []);
    app.filter('myFilter', function() {
    
      return function(input) {
        var newInput = [];
        angular.forEach(input, function(item) {
          console.log(item);
          if (item != "") newInput.push(item);
        });
        return newInput;
      };
    });
    
    
    app.controller('fCtrl', function($scope) {
    
      $scope.myData = [
        ["1", "1", "4", "4", "N", "4", "6", "8", "", "", "", "", "", "", "", "", "", ""],
        ["2", "2", "4", "6", "0", "6", "5", "4", "2", "", "8", "", "", "", "", "", "", ""],
        ["2", "3", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],
        ["3", "F", "D", "3", "5", "1", "D", "5", "", "", "", "", "", "", "", "", "", ""],
        ["1", "V", "4", "4", "3", "2", "1", "1", "4", "", "", "", "", "", "", "", "", ""],
        ["4", "5", "8", "6", "4", "2", "8", "7", "1", "1", "2", "", "", "", "", "", "", ""],
        ["4", "4", "R", "F", "D", "8", "4", "2", "4", "8", "7", "4", "8", "", "", "", "", ""],
        ["D", "5", "F", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],
        ["1", "4", "1", "3", "4", "B", "D", "G", "", "", "", "", "", "", "", "", "", ""]
      ];
    
    
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <div ng-app="app">
      <div ng-controller="fCtrl">
    
        <div ng-repeat="data in myData ">
          <span>{{data | myFilter }}</span>
          <div ng-show="(data | myFilter).length > 10">
            Show if length greater than 10
          </div>
    
    
          <div ng-show="(data | myFilter).length > 15">
            Show if length greater than 15
          </div>
          <hr/>
        </div>
      </div>
    </div>

    0 讨论(0)
  • 2021-01-16 02:30

    The other answers didn't work for me and angular-filter doesn't have any specific abilities for this case, but the following worked in my Angular app. No custom filter needed.

    arr = ["", "foo", "bar"];
    arr.filter(Boolean);
    

    Browser compatability: http://kangax.github.io/compat-table/es5/#Array.prototype.filter

    0 讨论(0)
  • 2021-01-16 02:35

    Use this link https://github.com/a8m/angular-filter

    It gives you a number of ways to filter whatever you need in any format.It also has examples along with each filter.

    0 讨论(0)
提交回复
热议问题