Javascript js中的高级过滤器对象

Javascript js中的高级过滤器对象,javascript,arrays,object,filter,Javascript,Arrays,Object,Filter,我正在尝试用对象过滤数组中的对象,但我不知道该怎么做。 样本: 如果status=“new”但结构不能更改,则需要筛选: { 245: [{ id: "12", name: "test", status: "new" }], 2815: [{ id: "19", name: "test", status: "new" }, { id: "120", name: "test2", status: "new"

我正在尝试用对象过滤数组中的对象,但我不知道该怎么做。 样本:

如果status=“new”但结构不能更改,则需要筛选:

{
  245: [{
    id: "12",
    name: "test",
    status: "new"
  }],
  2815: [{
    id: "19",
    name: "test",
    status: "new"
  },
  {
    id: "120",
    name: "test2",
    status: "new"
  }]
}

在条目上循环并使用筛选的值创建新对象

const obj={
245:[
{id:“12”,名称:“test”,状态:“new”},{id:“15”,名称:“test2”,状态:“old”},{id:“12”,名称:“test2”,状态:“old”},
2815:[
{id:“19”,名称:“test”,状态:“new”},{id:“50”,名称:“test2”,状态:“old”},{id:“120”,名称:“test2”,状态:“new”}]
}
日志(过滤器(obj,item=>item.status==“new”))
功能过滤器(obj、pred){
返回Object.fromEntries(Object.entries(obj.map)([name,value])=>[name,value.filter(pred)])

}
您可以使用
过滤器执行此操作:

  for(let key in obj){
     obj[key] = obj[key].filter(el => el.status == "new")
  }

您需要映射对象键,然后映射数组元素以过滤出最终结果

var obj={
245:[
{id:“12”,名称:“test”,状态:“new”},{id:“15”,名称:“test2”,状态:“old”},{id:“12”,名称:“test2”,状态:“old”},
2815:[
{id:“19”,名称:“test”,状态:“new”},{id:“50”,名称:“test2”,状态:“old”},{id:“120”,名称:“test2”,状态:“new”}]
}
var res=Object.entries(obj).reduce((acc,[key,value])=>{
acc[key]=value.filter(项=>item.status==“新建”);
返回acc;
}, {})

控制台日志(res)对于这种特殊情况,您可以这样做:

const myObj={
245:[
{id:“12”,名称:“测试”,状态:“新建”},
{id:“15”,名称:“test2”,状态:“old”},
{id:“12”,名称:“test2”,状态:“old”}
],
2815:[
{id:“19”,名称:“测试”,状态:“新建”},
{id:“50”,名称:“test2”,状态:“old”},
{id:“120”,名称:“test2”,状态:“new”}
]
};
常数filteredObj=filterMyObj(myObj);
控制台日志(filteredObj);
函数过滤器myObj(myObj){
常量myObjCopy={…myObj};
用于(myObjCopy中的常量键){
常量myArrCopy=[…myObjCopy[key]];
myObjCopy[key]=myArrCopy.filter(item=>item.status==“新建”);
}
返回复印件;

}
保存数据的对象是否有名称?
  for(let key in obj){
     obj[key] = obj[key].filter(el => el.status == "new")
  }