Фильтровать объект на основе данных в угловых js - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть такой объект данных:

$scope.data =  [
      {
        "name": "1001",
        "queue": [
          {
            "number": "111",
          }
        ]
      },
      {
        "name": "1002",
        "queue": [

        ]
      },
      {
        "name": "1008",
        "queue": [
          {
            "number": "222",
          }
        ]
      }]

Я использую угловой JS. Сначала я объявил 3 массива:

$scope.a = [];
$scope.b = [];
$scope.c = [];

Желаемый вывод, который я хочу:

Если я сделаю console.log($scope.a);, то результат должен быть:

{
    "name": "1001",
    "queue": [
      {
        "number": "111",
      }
    ]
  }

Если я сделаю console.log($scope.b);, тогда результат будет:

{
    "name": "1008",
    "queue": [
      {
        "number": "222",
      }
    ]
  }

Если я сделаю console.log($scope.c);, то результат должен быть:

{
    "name": "1002",
    "queue": [

    ]
  }

Я хочу просмотреть данные и поместить объекты с номером очереди 111 в $scope.a, передать объекты с номером очереди 222 в $scope.b и передать объекты, в которых находится массив очереди пуст в $scope.c. Я не могу понять, как фильтровать этот объект, проверяя значения из массива очереди. Как мне это сделать в AngularJS?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Это довольно просто решить эту проблему @Navin.Просто переберите массив объектов, проверяя номер очереди в каждом объекте.Как и когда вы встретите правильное совпадение, вставьте в соответствующий массив.

Я прикрепил рабочий фрагмент ниже.

var data = [{
    "name": "1001",
    "queue": [{
      "number": "111",
    }]
  },
  {
    "name": "1002",
    "queue": [

    ]
  },
  {
    "name": "1008",
    "queue": [{
      "number": "222",
    }]
  }
];
var a = [];
var b = [];
var c = [];
for (i = 0; i < data.length; i++) {
  if (data[i].queue.length != 0) {
    for (j = 0; j < data[i].queue.length; j++) {
      if (data[i].queue[j].number == 111) {

        a.push(data[i]);
      } else if (data[i].queue[j].number == 222) {
        b.push(data[i]);
      }
    }
  } else {
    c.push(data[i]);
  }
}
a = JSON.stringify(a);
b = JSON.stringify(b);
c = JSON.stringify(c);
console.log(a + "\n" + b + "\n" + c);
0 голосов
/ 15 ноября 2018

сделать это через цикл for, так как $scope.data - массив объектов, например, для.

for(i=0;i<=$scope.data.length ;i++){
   if($scope.data[i].queue.length != 0){
       for(j=0;j<=$scope.data[i].queue.length;j++){
         if($scope.data[i].queue[j].number == 111){
               $scope.a.push =$scope.data[i]
           }else if($scope.data[i].queue[j].number == 222){
                      $scope.b.push =$scope.data[i]    
                   }
        }
    }else{
             $scope.c.push = $scope.data[i]
           }
 }

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...