angular - How to write a dynamic function for my angular application
问题描述
I have a problem to write this code dynamically.
How can I write testtest
function dynamically, if in the future data could have different keys and values?
my json object looks just like this:
data = [
{
name: 'John',
id: 1,
colour: 'Green',
pet: 'Dog'
},
{
name: 'Sarah',
id: 2,
colour: 'Purple',
pet: 'Cat'
},
{
name: 'Lindsay',
id: 3,
colour: 'Blue',
pet: 'Lizard'
},
{
name: 'Megan',
id: 4,
colour: 'Orange',
pet: 'Dog'
}
];
and I have a filtervalue
filterValues = {
name: '',
id: '',
colour: '',
pet: ''
};
now a function
createFilter(): (data: any, filter: string) => boolean {
let filterFunction = function(data, filter): boolean {
let searchTerms = JSON.parse(filter);
let result = this.testtest(data, searchTerms);
return result;
}
return filterFunction;
}
testtest(data, searchTerms): boolean {
return data.name.toLowerCase().indexOf(searchTerms.name) !== -1
&& data.id.toString().toLowerCase().indexOf(searchTerms.id) !== -1
&& data.colour.toLowerCase().indexOf(searchTerms.colour) !== -1
&& data.pet.toLowerCase().indexOf(searchTerms.pet) !== -1;
}
解决方案
你可以这样做:
testtest(data, searchTerms): boolean {
var result = false;
for (var property in data) {
if (data.hasOwnProperty(property)) {
result = ( property.toLowerCase().indexOf(searchTerms[property]) !==-1 )
if(!result){
return result;
}
}
else {
return result;
}
}
}
推荐阅读
- sass - 使用从另一个 scss 文件 (@use) 导入的变量时,Scss(实时 scss 编译器)会引发错误
- javascript - 在使用 Mongoose/MongoDB 填充帖子的评论时包括用户详细信息
- android - 自定义 AlertDialog 布局宽度和高度未正确应用
- python - Pandas read_sql from MS SQL gets stuck for queries with 275+ chars in linux
- asp.net-core - SignalR + 通过远程服务进行令牌授权
- javascript - 根据时间和日期显示打开或关闭状态
- r - R中的并行化,执行时间比串行最差
- python - 如何使用 pip 在可编辑模式下使用 pyproject.toml 安装包?
- pyspark - Pyspark 删除重复的基本 2 列
- c++ - 为什么XRecordDisableContext() 不起作用?