我有一个像这样的数据对象:
$scope.data = [
{
"name": "1001",
"queue": [
{
"number": "111",
}
]
},
{
"name": "1002",
"queue": [
]
},
{
"name": "1008",
"queue": [
{
"number": "222",
}
]
}]
我正在使用angular 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中做到这一点?
答案 0 :(得分:2)
@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);
答案 1 :(得分:0)
通过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]
}
}
希望对您有所帮助。