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



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

例如,如果我们有数组

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

我有过滤器对象

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

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

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

我将如何制作一个可以做到这一点的管道?

我不知道角度这是你在 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);

这是一个很好的真实用例,有利于使用角管。是的,您可以使用预先过滤的数组绑定 for-loop,此外,在某些情况下,这可能是更可取的方式。但无论如何,您的情况是尝试 Pipe 的良好和适当的机会。

下面是一个示例。享受!

https://stackblitz.com/edit/angular-with-filter-pipe-example

最新更新