我需要创建一个搜索以下对象数组的过滤器,并过滤掉ID
值等于数组中任何对象的Message
值的对象。此外,过滤器应仅返回level
等于1
的对象。我已经设法过滤了level
属性,但我似乎无法弄清楚如何做其余的事情。
我们考虑一个示例:ID: 001
包含在Message
006
中,因此我想过滤掉ID
为006
的所有对象。< / p>
$scope.myData = [
{
"ID" : "001",
"Message" : "006",
"level":"1"
},
{
"ID" : "002",
"Message" : "test test test test1",
"level":"1"
},
{
"ID" : "003",
"Message" : "test test test test",
"level":"1"
},
{
"ID" : "004",
"Message" : "test test test test",
"level":"1"
},
{
"ID" : "005",
"Message" : " My Test",
"level":"1"
},
{
"ID" : "006",
"Message" : "",
"level":"1"
},
{
"ID" : "007",
"Message" : "next level",
"level":"2"
}
];
})
并过滤:
app.filter('filterData3', function () {
return function (data) {
var dataToBePushed = [];
data.forEach(function (resultData) {
if (resultData.level == 1)
dataToBePushed.push(resultData);
});
return dataToBePushed;
}
});
答案 0 :(得分:0)
假设您想要的是 NOT 在过滤后的数组中包含ID包含在另一个元素的Message中的元素,您可以编写如下过滤器:
.filter('filterData3', function () {
return function (data) {
var dataToBePushed = [];
var messages =[];
data.forEach(function (resultData) {
if (resultData.level == 1 && (messages.indexOf(resultData.ID) == -1)) {
messages.push(resultData.Message);
dataToBePushed.push(resultData);
}
});
return dataToBePushed;
}})
希望这适合你