Angular 2管道:如何创建将对象与对象数组进行比较的管道?

时间:2017-08-10 18:21:33

标签: angular filter angular2-pipe

我需要根据indexof方法是否显示对象中的各种字符串相似来创建一个过滤掉对象数组的管道。

例如,如果我们有数组

[{name: "john",
age: "17"},
{ name: "rob",
age: "20"}
]

我有过滤器对象

{name: "jo",
age: "1" }

它将返回对象{name: "john", age: "17"}

注意:这些数字是故意制作的字符串。

我怎样才能制作出这样做的烟斗?

1 个答案:

答案 0 :(得分:1)

我不知道这是你在JavaScript中如何做的,我希望它有所帮助

var data = [{name: "john",
age: "17"},
{ name: "rob",
age: "20"}
];

var filter = {name: "jo", age: "1" };

var filtered = data.filter(function (person) {
    // check objects keys are the same
    if (Object.keys(person).join("") !== Object.keys(filter).join("")) return false;

    //compare values
    for (var key in filter) {
        //false if empty string
        if (filter[key] === "") return false; 
        if(person[key].indexOf(filter[key])) {
            return false;
        }
    }
    return true;
});
console.log(filtered);