Javascript 从阵列组中删除多个对象

Javascript 从阵列组中删除多个对象,javascript,Javascript,我想在数组“Docs>Exam”中拼接整个对象,该数组有“Pass”:“NO” 我试过这个 var文档=[ {“Id”:1,“Name”:“First”,“test”:[{“Pass”:“No”},{“Sub”:“T1”}]}, {“Id”:2,“Name”:“Second”,“test”:[{“Pass”:“Yes”},{“Sub”:“T2”}]}, {“Id”:3,“Name”:“Third”,“test”:[{“Pass”:“No”},{“Sub”:“T3”}]} ]; 对于(var i

我想在数组“Docs>Exam”中拼接整个对象,该数组有“Pass”:“NO” 我试过这个

var文档=[
{“Id”:1,“Name”:“First”,“test”:[{“Pass”:“No”},{“Sub”:“T1”}]},
{“Id”:2,“Name”:“Second”,“test”:[{“Pass”:“Yes”},{“Sub”:“T2”}]},
{“Id”:3,“Name”:“Third”,“test”:[{“Pass”:“No”},{“Sub”:“T3”}]}
];
对于(var i=docs.length-1;i>=0;i--){
对于(var j=docs[i].Exam.length-1;j>=0;j--){
如果(文档[i]。考试[j]。通过==‘否’){
文件拼接(文件[i],1);
}
}
}
console.log(文档)这非常容易使用,而且:

这非常容易使用,并且:


使用
Array.filter
API

var文档=[{
“Id”:1,
“名称”:“第一”,
“考试”:[{
“通过”:“否”
}, {
“Sub”:“T1”
}]
},
{
“Id”:2,
“名称”:“第二个”,
“考试”:[{
“通过”:“是”
}, {
“Sub”:“T2”
}]
},
{
“Id”:3,
“姓名”:“第三名”,
“考试”:[{
“通过”:“否”
}, {
“Sub”:“T3”
}]
}
];
console.log(“过滤前:”,docs.length);
docs=docs.filter(函数(单据、索引){
var bIsPass=真;
对于(var j=doc.Exam.length-1;j>=0;--j){
如果(文件检查[j]。通过==“否”){
bIsPass=假;
打破
}
}
返回双通道;
});
console.log(“过滤前:”,docs.length);

console.log(“结果:”,文档)使用
Array.filter
API

var文档=[{
“Id”:1,
“名称”:“第一”,
“考试”:[{
“通过”:“否”
}, {
“Sub”:“T1”
}]
},
{
“Id”:2,
“名称”:“第二个”,
“考试”:[{
“通过”:“是”
}, {
“Sub”:“T2”
}]
},
{
“Id”:3,
“姓名”:“第三名”,
“考试”:[{
“通过”:“否”
}, {
“Sub”:“T3”
}]
}
];
console.log(“过滤前:”,docs.length);
docs=docs.filter(函数(单据、索引){
var bIsPass=真;
对于(var j=doc.Exam.length-1;j>=0;--j){
如果(文件检查[j]。通过==“否”){
bIsPass=假;
打破
}
}
返回双通道;
});
console.log(“过滤前:”,docs.length);

console.log(“结果:”,文档)您使用的是
拼接
有点不正确您使用的
拼接
有点不正确嗯,请将
的“是”
替换为
的“否”
,但在他的示例中,他需要的是
的“是”
one@KarelG不。问题是要取消那些没有通过的考试,也就是说,它应该保留那些通过的考试。嗯,将
'Yes'
替换为
'No'
,但在他的例子中,他需要的是
'Yes'
one@KarelG否。问题是删除未通过的考试,即保留已通过的考试。
docs = docs.filter(doc => doc.Exam.some(exam => exam.Pass === 'Yes'))
const isExamPassed = exam => exam.Pass === 'Yes';

1. docs.filter(doc => isExamPassed(doc.Exam[0]));
2. docs.map(doc => doc.Exam[0])
       .filter(isExamPassed);