Javascript js中的高级过滤器对象
我正在尝试用对象过滤数组中的对象,但我不知道该怎么做。 样本: 如果status=“new”但结构不能更改,则需要筛选: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"
{
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")
}