[英]How to filter the dynamic Json data using underscore.js?
我有一个包含动态数据的json对象数组,即键和值都是动态的:
arr=[{"a":"email"},{"b":"chat"},{"c":"email"},{"d":"chat"},{"e":"email"}]
arr的大小可能会改变,即它可能有任意数量的json对象。
如何使用underscore.js过滤数据?
这就是我想要做的事情:
filterData(searchValue:string){
this.skillGrpsFilteredData= _.filter(this.skillGroupsAndTypes, function(obj) {
return ~obj.toLowerCase().includes(searchValue) as any;
});
}
但是这种方法不起作用,因为上述数组obj中的键是动态的,即“a,b,c,d,e,......”本质上是动态的。 而searchValue是来自前端UI的值。
如何使用键执行搜索,即如果我键入searchValue = a,它应该给我该对象等等。
感谢和问候
试试这个以下函数过滤包含对象的键和值的搜索值的数组对象,你可以通过'a'或“email”来获取对象
function searchObject(array , searchValue){
return array.filter(item=>{ return Object.keys(item).includes(searchValue) ||Object.values(item).includes(searchValue)})
}
let arr=[{"a":"email"},{"b":"chat"},{"c":"email"},{"d":"chat"},{"e":"email"}]
console.log(searchObject(arr,'a'));
如果你只想按键过滤而不是按对象的值删除
Object.values(item).includes(searchValue)
来自或条件
如果你想尝试indexOf尝试
function searchObject(array , searchValue){
return array.filter(item=>{ return
Object.keys(item).indexOf(searchValue)>=0})
}
尝试以下功能。 在数组参数中,您可以传递arr = [{“a”:“email”},{“b”:“chat”},{“c”:“email”},{“d”:“chat”}, {“e”:“email”}]并在searchKey参数传递中,例如“a”,它将返回{“a”:“email”}。 如果找不到匹配函数将返回null
searchByKey(array,searchKey ) {
for (let obj of array) {
for (let key in obj) {
if (key == searchKey) {
return obj;
}
}
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.