Javascript 如果对象包含某些内容,则删除所有数组元素
我得到了一个物体阵列 出口接口课程{ id:字符串; 学生:用户[]; 颜色:字符串; } 导出接口用户{ id:字符串; 名称:字符串; //... } 我需要删除课程数组的所有元素,如果他内部的学生数组包含特定id 我试图做一些类似的事情,但我不明白我应该在过滤器内部做什么 const deleteCourseWhereImIn=课程:课程[]=>{ 常数myid=1111 返回课程。filteritem:Course=> //[...] }; 例如: 输入: 常数课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] 我的身份证是1111 输出应为: 常数课程=[ { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ]Javascript 如果对象包含某些内容,则删除所有数组元素,javascript,arrays,ecmascript-6,filter,Javascript,Arrays,Ecmascript 6,Filter,我得到了一个物体阵列 出口接口课程{ id:字符串; 学生:用户[]; 颜色:字符串; } 导出接口用户{ id:字符串; 名称:字符串; //... } 我需要删除课程数组的所有元素,如果他内部的学生数组包含特定id 我试图做一些类似的事情,但我不明白我应该在过滤器内部做什么 const deleteCourseWhereImIn=课程:课程[]=>{ 常数myid=1111 返回课程。filteritem:Course=> //[...] }; 例如: 输入: 常数课程=[ { id:JSL
因为我是john,不在本课程中。最好使用reduce生成新数组并将其分配给课程 让课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] courses=courses.reducearr,c=>{ 如果!c.student.somes=>s.id=='1111'{ arr.pushc; } 返回arr },[]
控制台。日志课程 更好地使用reduce生成新数组并将其分配给Course 让课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] courses=courses.reducearr,c=>{ 如果!c.student.somes=>s.id=='1111'{ arr.pushc; } 返回arr },[] 控制台。日志课程 使用过滤器和每个: 常数myID=1111; 常数课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] const filtered=courses.filterc=>c.student.everys=>s.id!=粘虫 console.logfiltered 使用过滤器和每个: 常数myID=1111; 常数课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] const filtered=courses.filterc=>c.student.everys=>s.id!=粘虫 console.logfiltered 使用过滤器和findIndex: 下面是一个详细的版本,可以更好地说明正在发生的事情:
const deleteCourseWhereImIn = (courses: Course[]) => {
const myid = "1111";
const filteredCourses = courses.filter(item: Course => {
const index = item.student.findIndex(user: User => {
return user.id == myid
});
// The method findIndex() will return -1 if the value you search for does not appear in the array.
return index === -1;
});
return filteredCourses;
};
使用过滤器和findIndex:
下面是一个详细的版本,可以更好地说明正在发生的事情:
const deleteCourseWhereImIn = (courses: Course[]) => {
const myid = "1111";
const filteredCourses = courses.filter(item: Course => {
const index = item.student.findIndex(user: User => {
return user.id == myid
});
// The method findIndex() will return -1 if the value you search for does not appear in the array.
return index === -1;
});
return filteredCourses;
};
只需使用javascript的功能特性 const courses=[…您的课程…] 常数idToCheck=1111 让newCourses=courses.filterx=> x、 student.findIndexy=>y.id==idToCheck==-1
只需使用javascript的功能特性 const courses=[…您的课程…] 常数idToCheck=1111 让newCourses=courses.filterx=> x、 student.findIndexy=>y.id==idToCheck==-1
您可以使用filter和一些工具筛选条件id为1111的课程。 在您的描述中,您提到要删除您所在的课程 为此,您可以在函数deleteCourseWhereImIn中使用此筛选器,并将其返回的内容分配给课程[] 让课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] 课程=课程。筛选课程=>{ return!course.student.somestudent=>student.id==1111; };
控制台。日志课程 您可以使用filter和一些工具筛选条件id为1111的课程。 在您的描述中,您提到要删除您所在的课程 为此,您可以在函数deleteCourseWhereImIn中使用此筛选器,并将其返回的内容分配给课程[] 让课程=[ { id:JSLKLDK, 学生:[ { id:1111, 姓名:约翰 }, { 身份证号码:2222, 姓名:罗纳德 }, { id:3333, 姓名:蒂姆 }, ], 颜色:f01000, }, { id:5JLDKLD, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, { id:1111, 姓名:约翰 }, ], 颜色:511131, }, { id:PDLFMLZ, 学生:[ { 身份证号码:2222, 姓名:罗纳德 }, ], 颜色:ffffff, }, ] 课程=课程。筛选课程=>{ return!course.student.somestudent=>student.id==1111; }; 控制台。日志课程 请试试这个。 我正在传递函数deleteCourseWhereImIn中的课程数组,然后说我的ID是1111。我正在检查student数组中是否有任何student具有此id,从而使用某种方法返回布尔值。然后根据正确或错误筛选特定课程
const deleteCourseWhereImIn = (courses: Course[]) => {
const myId = "1111";
let filteredCourses = courses.filter(course => {
let studentArr = course.student;
let filterdStudent = studentArr.some(student => student.id === myId);
return !filterdStudent;
});
console.log('Filtered Course', filteredCourses);
}
deleteCourseWhereImIn(courses); // calling function
请试试这个。
我正在传递函数deleteCourseWhereImIn中的课程数组,然后说我的ID是1111。我正在检查student数组中是否有任何student具有此id,从而使用某种方法返回布尔值。然后根据正确或错误筛选特定课程
const deleteCourseWhereImIn = (courses: Course[]) => {
const myId = "1111";
let filteredCourses = courses.filter(course => {
let studentArr = course.student;
let filterdStudent = studentArr.some(student => student.id === myId);
return !filterdStudent;
});
console.log('Filtered Course', filteredCourses);
}
deleteCourseWhereImIn(courses); // calling function
请不要只在答案中发布代码;最好解释一下,这样OP可以学到一些东西。如果你愿意,我会更新答案,如果你能提出建议的话edit@Mitya谢谢你的否决票,我想我以后不会再一起回答问题了。不要太在意了。你的回答没有任何解释,因此完全值得投反对票。你现在添加了一些公认的最低限度的解释,所以我撤回了否决票。你为什么要我编辑?我不能为你或其他任何人解释你的答案。你现在已经这样做了,否决票被撤回,让我们继续。请不要只在答案中发布代码;最好解释一下,这样OP可以学到一些东西。如果你愿意,我会更新答案,如果你能提出建议的话edit@Mitya谢谢你的否决票,我想我不会再一起回答问题了
呃,在将来,不要把它看得太私人。你的回答没有任何解释,因此完全值得投反对票。你现在添加了一些公认的最低限度的解释,所以我撤回了否决票。你为什么要我编辑?我不能为你或其他任何人解释你的答案。你已经这么做了,否决票已经撤回,让我们继续。