Dan*_*ilo 3 javascript arrays filter node.js
有人可以帮助我解决这个问题吗?在特定条件之后,我有一个object/array
放置对象的位置"status = true"
。现在,我的问题是,当所有子对象都为真时,我想删除这些对象和父对象。我将举例说明这个问题。
function removeProp(obj, propToDelete,value) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
removeProp(obj[property],propToDelete,value);
} else {
if(property === propToDelete && obj[property] == value){
delete obj[property];
//delete obj;
}
}
}
}
}
var obj =
{
"name":"Bank Branch 1",
"requests":[
{
"date":"2019-10-16 03:18:02",
"req":[
{
"amount":"300",
"coin":2
},
{
"amount":"500",
"coin":5
}
]
},
{
"date":"2019-10-16 03:19:05",
"req":[
{
"amount":"300",
"coin":2,
"status":true
},
{
"amount":"500",
"coin":5
}
]
},
{
"date":"2019-10-16 03:19:20",
"req":[
{
"amount":"22",
"coin":2,
"status":true
},
{
"amount":"111",
"coin":5,
"status":true
}
]
}
]
}
console.log(JSON.stringify(obj));
removeProp(obj,"status",true);
console.log(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)
我希望这是我必须删除状态为true的所有对象以及父对象“ date”的地方。寻找“ 2019-10-16 03:19:05”,我不想删除它,因为有一个对象尚不存在“状态为真” ...而“ 2019-10-16 03: 19:20“被删除,因为所有对象都是真实的。
var obj =
{
"name":"Bank Branch 1",
"requests":[
{
"date":"2019-10-16 03:18:02",
"req":[
{
"amount":"300",
"coin":2
},
{
"amount":"500",
"coin":5
}
]
},
{
"date":"2019-10-16 03:19:05",
"req":[
{
"amount":"300",
"coin":2,
"status":true
},
{
"amount":"500",
"coin":5
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Array.filter()
和Array.every()
像这样将结果过滤到另一个数组中-
var result = obj.requests.filter(x => !x.req.every(y => y.status));
Run Code Online (Sandbox Code Playgroud)
运行以下代码段以在控制台中检查结果。
var result = obj.requests.filter(x => !x.req.every(y => y.status));
Run Code Online (Sandbox Code Playgroud)
然后只需将requests
属性替换为新创建的数组即可。
obj.requests = result;
Run Code Online (Sandbox Code Playgroud)