Javascript Lodash筛选器数组并获取父索引

Javascript Lodash筛选器数组并获取父索引,javascript,reactjs,react-native,lodash,Javascript,Reactjs,React Native,Lodash,我的Api以json格式返回这个 [ { "title":"Category One", "data":[ { "id":"5", "code":"0001", "name":"Item Name" }, { "id":"6", "code":"0002", "name"

我的Api以json格式返回这个

[
   {
      "title":"Category One",
      "data":[
         {
            "id":"5",
            "code":"0001",
            "name":"Item Name"
         },
         {
            "id":"6",
            "code":"0002",
            "name":"Item Name 2"
         }
      ]
   },
   {
      "title":"Category Two",
      "data":[
         {
            "id":"7",
            "code":"0003",
            "name":"Item Name 3"
         },
         {
            "id":"8",
            "code":"0004",
            "name":"Item Name 4"
         }
      ]
   }
]
我想按id筛选上面给定的数组 我试着这样做:

_.filter(data, ["title.data.id", "5"]);
_.filter(data, { data: [{ id: "5" }] });
但返回空数组,然后我也尝试如下操作:

_.filter(data, ["title.data.id", "5"]);
_.filter(data, { data: [{ id: "5" }] });
但返回完整数组


请指导我这里缺少什么。

这是一个简单的JS解决方案

常数数据=[ { 标题:第一类, 数据:[ { id:5, 代码:0001, 名称:项目名称 }, { id:6, 代码:0002,, 名称:项目名称2 } ] }, { 标题:第二类, 数据:[ { id:7, 代码:0003,, 名称:项目名称3 }, { id:8, 代码:0004,, 名称:项目名称4 } ] } ]; const requuried=data.finditem=>item.data.findd=>d.id=='5';
console.LogRequired 这是一个简单的JS解决方案

常数数据=[ { 标题:第一类, 数据:[ { id:5, 代码:0001, 名称:项目名称 }, { id:6, 代码:0002,, 名称:项目名称2 } ] }, { 标题:第二类, 数据:[ { id:7, 代码:0003,, 名称:项目名称3 }, { id:8, 代码:0004,, 名称:项目名称4 } ] } ]; const requuried=data.finditem=>item.data.findd=>d.id=='5';
console.LogRequired 您需要获取所需的属性并迭代内部数组

var data=[{title:Category One,data:[{id:5,code:0001,name:Item name},{id:6,code:0002,name:Item name 2}]},{title:Category 2,data:[{id:7,code:0003,name:Item name 3},{id:8,code:0004,name:Item name:4}]}, result=..filterdata,{data}=>..somedata,{id}=>id==5; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;}
您需要获取所需的属性并迭代内部数组

var data=[{title:Category One,data:[{id:5,code:0001,name:Item name},{id:6,code:0002,name:Item name 2}]},{title:Category 2,data:[{id:7,code:0003,name:Item name 3},{id:8,code:0004,name:Item name:4}]}, result=..filterdata,{data}=>..somedata,{id}=>id==5; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;} 设obj=[ { 标题:第一类, 数据:[ { id:5, 代码:0001, 名称:项目名称 }, { id:6, 代码:0002,, 名称:项目名称2 } ] }, { 标题:第二类, 数据:[ { id:7, 代码:0003,, 名称:项目名称3 }, { id:8, 代码:0004,, 名称:项目名称4 } ] } ] 函数getFilterResultfilterValue{ 让结果={} 对于let i=0;ida.id==filterValue 如果索引>-1{ 结果['title']=obj[i]。title data[index]['name']=New Item/*添加了更新名称字段的代码*/ 结果['data']=[data[索引]] } } 返回结果 } 让finalResult=getFilterResult7 console.logfinalResult 设obj=[ { 标题:第一类, 数据:[ { id:5, 代码:0001, 名称:项目名称 }, { id:6, 代码:0002,, 名称:项目名称2 } ] }, { 标题:第二类, 数据:[ { id:7, 代码:0003,, 名称:项目名称3 }, { id:8, 代码:0004,, 名称:项目名称4 } ] } ] 函数getFilterResultfilterValue{ 让结果={} 对于let i=0;ida.id==filterValue 如果索引>-1{ 结果['title']=obj[i]。title data[index]['name']=New Item/*添加了更新名称字段的代码*/ 结果['data']=[data[索引]] } } 返回结果 } 让finalResult=getFilterResult7
console.logfinalResult您可以使用reduce和filter执行此操作

常数数据=[ { 标题:"第一类",, 数据:[ { id:'5', 代码:“0001”, 名称:'项目名称', }, { id:'6', 代码:“0002”, 名称:“项目名称2”, }, ], }, { 标题:"第二类",, 数据:[ { id:'7', 代码:“0003”, 名称:“项目名称3”, }, { id:'8', 代码:“0004”, 名称:“项目名称4”, }, ], }, ]; data.reduceac,curr=>{ const val=curr.data.filterd=>d.id=='5'; 如果val.length acc=[…acc,…val]; 返回acc;
}, []; 您可以使用reduce和filter来执行此操作

常数数据=[ { 标题:"第一类",, 数据:[ { id:'5', 代码:“0001”, 名称:'项目名称', }, { id:'6', 代码:“0002”, 名称:“项目名称2”, }, ], }, { 标题:"第二类",, 数据:[ { id:'7', 代码:“0003”, 名称:“项目名称3”, }, { id:'8', 代码:“0004”, 名称:“项目名称4”, }, ], }, ]; data.reduceac,curr=>{ const val=curr.data.filterd=>d.id=='5'; 如果val.length acc=[…acc,…val]; 返回acc;
}, [];不工作,从类别1数据集中返回两个数组。不工作,从类别1数据集中返回两个数组。不工作。它返回完整的数组请检查现在我已经编辑了我的答案@DigitalJeddy谢谢它可以工作,但是你也可以用lodash来做吗?我可以在找到索引后更改名称吗,使用上述方法?我已更新了我的解决方案,第一个解决方案将更新密钥,只发送匹配id对象,第二个使用lodash将返回更新名称为field@digitaljeditnot Working的完整对象。它返回完整的数组请检查现在我已经编辑了我的答案@DigitalJeddy谢谢它可以工作,但是你也可以用lodash来做吗?我可以在找到索引后更改名称吗,使用上述方法?我已经更新了我的解决方案,第一个解决方案将更新密钥,只发送匹配id对象,第二个使用lodash将返回更新名称为field@DIGITALJEDI的完整对象