Javascript 过滤器在多维数组对象中应用,其子节点为Angular JS中的响应

Javascript 过滤器在多维数组对象中应用,其子节点为Angular JS中的响应,javascript,angularjs,json,filter,Javascript,Angularjs,Json,Filter,我有数组对象的结果,需要在过滤器中应用response\u id。此键存在于响应的子级中。如果我使用23764、23765搜索,我希望所有问题对象至少有两个响应,id为23764和23765,并且这些是我希望在响应数组中的唯一两个响应对象 如果仅使用23764搜索,则需要所有具有该id的响应对象的问题对象,并且数组中只有该响应对象 我当前的实现尝试执行以下操作: var-app=angular.module('myApp',[]); app.controller('myCtrl',函数($sc

我有数组对象的结果,需要在过滤器中应用
response\u id
。此键存在于响应的子级中。如果我使用23764、23765搜索,我希望所有问题对象至少有两个响应,id为23764和23765,并且这些是我希望在响应数组中的唯一两个响应对象

如果仅使用23764搜索,则需要所有具有该id的响应对象的问题对象,并且数组中只有该响应对象

我当前的实现尝试执行以下操作:

var-app=angular.module('myApp',[]);
app.controller('myCtrl',函数($scope,$filter){
$scope.data=[
{
“id”:“1341”,
“问题”:“这个频道怎么样?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“每件事”
},
{
“回复id”:“23765”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
},
{
“id”:“1342”,
“问题”:“这个频道有什么不喜欢的地方?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“没有”
},
{
“回复id”:“23765”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
},
{
“id”:“1343”,
“问题”:“这条通道有什么建议?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“没有”
},
{
“回复id”:“23765”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
}
];
var res=($filter('filter')($scope.data,{response:{response_id:'2376423765'},true));
控制台日志(res);
});

您可以使用angular forEach循环删除对象。请尝试此操作

var-app=angular.module('myApp',[]);
app.controller('myCtrl',函数($scope,$filter){
$scope.data=[
{
“id”:“1341”,
“问题”:“这个频道怎么样?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“每件事”
},
{
“回复id”:“237657”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
},
{
“id”:“1342”,
“问题”:“这个频道有什么不喜欢的地方?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“没有”
},
{
“回复id”:“23765”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
},
{
“id”:“1343”,
“问题”:“这条通道有什么建议?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“没有”
},
{
“回复id”:“237654”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
}
];
$scope.result=[];
角度.forEach($scope.data,function(d){
角度。forEach(d.响应,函数(res,索引){
如果(res.response_id==“23766”){
d、 响应。拼接(索引1);
console.log(d.response);
}
})
})
//log($scope.data);
});

{{data}json}

您可以使用angular forEach循环删除对象。请尝试此操作

var-app=angular.module('myApp',[]);
app.controller('myCtrl',函数($scope,$filter){
$scope.data=[
{
“id”:“1341”,
“问题”:“这个频道怎么样?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“每件事”
},
{
“回复id”:“237657”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
},
{
“id”:“1342”,
“问题”:“这个频道有什么不喜欢的地方?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“没有”
},
{
“回复id”:“23765”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
},
{
“id”:“1343”,
“问题”:“这条通道有什么建议?”,
“答复”:[
{
“回复id”:“23764”,
“评论”:“没有”
},
{
“回复id”:“237654”,
“评论”:“否”
},
{
“回复id”:“23766”,
“注释”:”
}
]
}
];
$scope.result=[];
角度.forEach($scope.data,function(d){
角度。forEach(d.响应,函数(res,索引){
如果(res.response_id==“23766”){
d、 响应。拼接(索引1);
console.log(d.response);
}
})
})
//log($scope.data);
});

{{data}json}

因此,您可以使用
2376423765
进行筛选,并希望得到包含以下内容的所有问题的数组
var myFilter = function(collection, values) {

  values = values.replace(' ', '').split(',');

  var result = [];

  collection.forEach(function(question) {

    var questionMatches = [];

    question.response.forEach(function(r) {

      if (values.indexOf(r.response_id) > -1) questionMatches.push(r);
    });

    if (questionMatches.length !== values.length) return;

    var questionCopy = angular.extend({}, question);

    questionCopy.response = questionMatches;

    result.push(questionCopy);
  });

  return result;
};

var filterValues = '23764, 23765';

var result = myFilter($scope.data, filterValues);