Javascript 获取特定参数为空的数组中的第一项
考虑到这个阵列:Javascript 获取特定参数为空的数组中的第一项,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,考虑到这个阵列: const body = [ {id: 1,courses: [{title:"course1.1", results:[]}, {title:"course1.2", results:[]}]}, {id: 2,courses: [{title:"course1.1", results:[]}, {title:"course1.2",results:[]}]}, ]; 我试图得到身体里第一个没有结果的东西 我试过这个: body.filter(session=
const body = [
{id: 1,courses: [{title:"course1.1", results:[]}, {title:"course1.2", results:[]}]},
{id: 2,courses: [{title:"course1.1", results:[]}, {title:"course1.2",results:[]}]},
];
我试图得到身体里第一个没有结果的东西
我试过这个:
body.filter(session=>session.courses.filter(course=>course.results.length)这应该可以做到:
const body=[{id:1,课程:[{title:“course1.1”,结果:[{title:“result1.1.1”},{title:“result1.1.2”},{title:“course1.2”,结果:[]},{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},{id:3,课程:[]};
console.log(body.reduce((r,c)=>(c.courses.length?r.push({id:c.id,courses:[…c.courses.filter({results}=>!results.length)]):true)和&r,[])
这应该可以做到:
const body=[{id:1,课程:[{title:“course1.1”,结果:[{title:“result1.1.1”},{title:“result1.1.2”},{title:“course1.2”,结果:[]},{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},{id:3,课程:[]};
console.log(body.reduce((r,c)=>(c.courses.length?r.push({id:c.id,courses:[…c.courses.filter({results}=>!results.length)])&&r,[])
您可以映射新对象,而无需修改原始数据
var数组=[{id:1,课程:[{title:“course1.1”,结果:[{title:“result1.1.1”},{title:“result1.1.2”},{title:“course1.2”,结果:[]},{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},
结果=数组.map(o=>
Object.assign(
{},
啊,,
{courses:o.courses.filter({results:{length}})=>!length}
)
);
console.log(result);
您可以在不改变原始数据的情况下映射新对象
var数组=[{id:1,课程:[{title:“course1.1”,结果:[{title:“result1.1.1”},{title:“result1.1.2”},{title:“course1.2”,结果:[]},{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},
结果=数组.map(o=>
Object.assign(
{},
啊,,
{courses:o.courses.filter({results:{length}})=>!length}
)
);
console.log(结果);
const body=[
{id:1,课程:[{title:“course1.1”,结果:[{title:“result1.1.1”},{title:“result1.1.2”},{title:“course1.2”,结果:[]},
{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},
];
让results=body.find(session=>-1course.results.length
const body=[
{id:1,课程:[{title:“course1.1”,结果:[{title:“result1.1.1”},{title:“result1.1.2”},{title:“course1.2”,结果:[]},
{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},
];
让results=body.find(session=>-1course.results.length)也添加想要的结果。@NinaScholz刚刚添加了它,谢谢。尝试使用$.grep(body,function(obj,index1){if($.grep(obj.courses,function(courses,index2){if(course.results.length0)返回obj;})如果可能的话,请确保我的代码中存在语法错误,但grep可能对您有用。您可以通过索引号控制返回结果。当id:1中的结果为空时,为什么返回结果会是这样?我很困惑。您的结果只有id:2
?请同时添加所需的结果。@NinaScholz刚刚添加了它,谢谢。请尝试使用$.grep(body,function(obj,index1){if($.grep(obj.courses,function(courses,index2){if(courses.results.length0)返回obj;})如果可能的话,请确保我的代码中存在语法错误,但grep可能对您有用。您可以通过索引号控制返回结果。当id:1中的结果为空时,为什么返回结果会是这样?我很困惑。您的结果只有id:2
?它几乎可以工作了,它正在删除第一级信息,所以我现在收到了只有没有家长id的课程。哦,你是说你需要id吗?我在问题中添加了期望值,这样你就可以看到我期望的:)谢谢你的帮助!我刚刚遇到一个错误,如果家长没有带结果的课程,它仍然返回带空结果的家长,有没有办法摆脱它?const body=[{id:1,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]}]
请给我几分钟时间它几乎可以工作了,它正在删除第一级信息,所以我现在只收到没有家长id的课程。哦,你是说你需要id吗?我在问题中添加了期望值,这样你就可以看到我期望的:)谢谢你的帮助!我刚刚遇到一个错误,如果家长没有带结果的课程,它仍然会返回带空结果的家长,有没有办法摆脱它?const body=[{id:1,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]},{id:2,课程:[{title:“course1.1”,结果:[]},{title:“course1.2”,结果:[]}];
请给我几分钟谢谢你的回答@Nina:)谢谢你的回答@Nina:)
const body2 = [
{id: 2,courses: [{title:"course1.1", results:[]}, {title:"course1.2",results:[]}]},
];