【问题标题】:Filter an object based on data in angular js根据角度js中的数据过滤对象
【发布时间】:2019-04-18 06:22:52
【问题描述】:

我有一个这样的数据对象:

$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 中做到这一点?

【问题讨论】:

  • 请用输出更新问题。
  • 没有输出。我想根据队列号过滤数据并相应地存储到不同的数组中
  • 请为上述输入添加示例输出。
  • 根据您问题中的 JSON,您能否在 $scope.a$scope.b$scope.c 中显示需要什么?
  • 检查更新的问题以获得所需的输出

标签: javascript arrays angularjs json


【解决方案1】:

解决这个问题很简单@Navin。只需遍历对象数组,检查每个对象中的队列号。当你遇到正确的匹配时,插入到相应的数组中。

我在下面附上了工作的sn-p。

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);

【讨论】:

【解决方案2】:

通过 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]
           }
 }

希望对你有帮助。

【讨论】:

  • 嘿,安妮,您的回答中的逻辑是正确的。但是你如何push 将数据放入数组中存在错误。正确的推送方法是将要推送的部分放在括号() 内。检查我的答案。不过你的逻辑是对的。
猜你喜欢
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 2016-10-30
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
相关资源
最近更新 更多