angularjs 中的数组过滤器

Array filter in angularjs

我需要创建一个过滤器来搜索以下对象数组,并过滤​​掉数组中任何对象中 ID 值等于 Message 值的那些对象。此外,过滤器应该 return 仅 level 等于 1 的对象。我已经设法过滤了 level 属性,但我似乎无法弄清楚如何进行其余操作。

举个例子:ID: 001在其Message中包含006,所以我想过滤掉所有ID006的对象.

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

假设您想要的是 NOT 在过滤后的数组中包含 ID 包含在另一个元素的消息中的元素,您可以编写如下过滤器:

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

希望这对你有用