Javascript 多次拼接一组对象
我需要处理一些数据。有一个对象数组。其中一个对象是“活动的”。我拼接了活动房间并将其放置在阵列的索引0中。现在,我需要删除更多数据,并且出现问题。只有一个Javascript 多次拼接一组对象,javascript,arrays,object,splice,Javascript,Arrays,Object,Splice,我需要处理一些数据。有一个对象数组。其中一个对象是“活动的”。我拼接了活动房间并将其放置在阵列的索引0中。现在,我需要删除更多数据,并且出现问题。只有一个roomActive:true和一个sectionActive:true const exhibitions = [ { title: "Lobby", roomActive: false, sections: [ { id: 4, sectio
roomActive:true
和一个sectionActive:true
const exhibitions = [
{
title: "Lobby",
roomActive: false,
sections: [
{ id: 4, sectionActive: false },
{ id: 5, sectionActive: false },
{ id: 6, sectionActive: false },
{ id: 7, sectionActive: false }
]
},
{
title: "First Room",
roomActive: false,
sections: [
{ id: 8, sectionActive: false },
{ id: 9, sectionActive: false },
{ id: 10, sectionActive: false },
{ id: 11, sectionActive: false }
]
},
{
title: "Second Room",
roomActive: true,
sections: [
{ id: 12, sectionActive: false },
{ id: 13, sectionActive: true },
{ id: 14, sectionActive: false },
{ id: 15, sectionActive: false }
]
},
{
title: "Fourth Room",
roomActive: false,
sections: [
{ id: 16, sectionActive: false },
{ id: 17, sectionActive: false },
{ id: 18, sectionActive: false },
{ id: 19, sectionActive: false }
]
}
要将节活动放置在索引0处,请执行以下操作:
const handleTimelineClose = () => {
const newArray = [...exhibitions]
newArray.find((item, i) => {
return item.roomActive === true
&& newArray.unshift(newArray.splice(i, 1)[0])
})
return newArray
}
此函数将此对象放置在索引0处:
{
title: "Second Room",
roomActive: true,
sections: [
{ id: 12, sectionActive: false },
{ id: 13, sectionActive: true },
{ id: 14, sectionActive: false },
{ id: 15, sectionActive: false }
]
}
但是我还需要操作这个roomActive:true
对象的部分
数组。我需要找到并保持部分处于活动状态的对象:true
,以及下一个索引中的对象。但我不知道该怎么做
{
title: "Second Room",
roomActive: true,
sections: [
{ id: 13, sectionActive: true },
{ id: 14, sectionActive: false },
]
}
预期结果:
const exhibitions = [
{
title: "Second Room",
roomActive: true,
sections: [
{ id: 13, sectionActive: true },
{ id: 14, sectionActive: false },
]
},
{
title: "Lobby",
roomActive: false,
sections: [
{ id: 4, sectionActive: false },
{ id: 5, sectionActive: false },
{ id: 6, sectionActive: false },
{ id: 7, sectionActive: false }
]
},
{
title: "First Room",
roomActive: false,
sections: [
{ id: 8, sectionActive: false },
{ id: 9, sectionActive: false },
{ id: 10, sectionActive: false },
{ id: 11, sectionActive: false }
]
},
{
title: "Fourth Room",
roomActive: false,
sections: [
{ id: 16, sectionActive: false },
{ id: 17, sectionActive: false },
{ id: 18, sectionActive: false },
{ id: 19, sectionActive: false }
]
}
您可以通过查看属性来筛选数组,并检查上一个属性是否为
true
const
sections=[{id:12,sectionActive:false},{id:13,sectionActive:true},{id:14,sectionActive:false},{id:15,sectionActive:false}],
trueAndNext=节
.filter({sectionActive},i,a)=>sectionActive | | a[i-1]?.sectionActive);
console.log(trueAndNext)代码>
.as控制台包装{max height:100%!important;top:0;}
这不是的工作方式。some()
应该使用.some()
在至少一个元素的回调返回true
时返回true
,否则返回false
“但我不知道如何执行此操作”-使用循环或.findIndex()
->到目前为止,您自己尝试过解决这个问题吗?确切的预期结果是什么?这与排序有什么关系?更新以包含我尝试获得的结果。谢谢