繁体   English   中英

如何使用underscore.js过滤动态Json数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM