我需要创建一个管道,根据 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