Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多次拼接一组对象_Javascript_Arrays_Object_Splice - Fatal编程技术网

Javascript 多次拼接一组对象

Javascript 多次拼接一组对象,javascript,arrays,object,splice,Javascript,Arrays,Object,Splice,我需要处理一些数据。有一个对象数组。其中一个对象是“活动的”。我拼接了活动房间并将其放置在阵列的索引0中。现在,我需要删除更多数据,并且出现问题。只有一个roomActive:true和一个sectionActive:true const exhibitions = [ { title: "Lobby", roomActive: false, sections: [ { id: 4, sectio

我需要处理一些数据。有一个对象数组。其中一个对象是“活动的”。我拼接了活动房间并将其放置在阵列的索引0中。现在,我需要删除更多数据,并且出现问题。只有一个
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()
->到目前为止,您自己尝试过解决这个问题吗?确切的预期结果是什么?这与排序有什么关系?更新以包含我尝试获得的结果。谢谢