Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Typescript - Fatal编程技术网

Javascript 嵌套数组中的数据操作

Javascript 嵌套数组中的数据操作,javascript,typescript,Javascript,Typescript,在下面的数据结构中 data = { data: [{ areas: [{ sections: [{ rjf: [{ type: 'heading-1' text: 'Sample Heading', }] }, { rjf: [{ type: 'paragraph', dept

在下面的数据结构中

data = {
  data: [{
    areas: [{
      sections: [{
          rjf: [{
            type: 'heading-1'
            text: 'Sample Heading',
          }]
        },
        {
          rjf: [{
              type: 'paragraph',
              depth: 0,
              text: 'This website is offered to you by:',
              inlineStyleRanges: [],
              inlineEntityRanges: []
            },
            {
              "type": "ordered-list-item",
              "text": "Ordered Item A",
            },
            {
              "type": "unordered-list-item",
              "text": "Ordered Item B",
            },
            {
              type: 'paragraph',
              depth: 0,
              text: 'This website is offered to you by:',
              inlineStyleRanges: [],
              inlineEntityRanges: []
            },
            {
              "type": "ordered-list-item",
              "text": "Ordered Item A",
            },
            {
              "type": "unordered-list-item",
              "text": "Ordered Item B",
            }
          ]
        }
      ]
    }]
  }]
};
我正在尝试将所有作为
有序列表项
&
无序列表项
的类型分组到新对象中。像下面这样

{
    "type": 'list',
    "items": [
      {
        "type": "ordered-list-item",
        "text": "Ordered Item A",
      },
      {
        "type": "unordered-list-item",
        "text": "Ordered Item B",
      }
    ]
  }
经过这么多的高音,我得出了以下解决方案。这个很好用。 但是有一个问题,在
rjf
中,如果
有序列表项
无序列表项
未找到,则不应发生任何不幸的情况,并且将空的
列表
添加到
rjf

下面是代码片段,请帮助我解决此问题

const数据={
数据:[{
领域:[{
章节:[{
rjf:[{
文本:“样本标题”,
}]
},
{
rjf:[{
键入:“段落”,
深度:0,
text:“此网站由以下人员提供:”,
inlineStyleRanges:[],
InlineEntityAges:[]
},
{
“类型”:“有序列表项”,
“文本”:“订购项目A”,
},
{
“类型”:“无序列表项”,
“文本”:“订购的B项”,
},
{
键入:“段落”,
深度:0,
text:“此网站由以下人员提供:”,
inlineStyleRanges:[],
InlineEntityAges:[]
},
{
“类型”:“有序列表项”,
“文本”:“订购项目A”,
},
{
“类型”:“无序列表项”,
“文本”:“订购的B项”,
}
]
}
]
}]
}]
};
常量moveToNewObject=(数据)=>{
常量节=数据[0]。区域[0]。节;
sections.forEach(数据=>{
let list=data.rjf;
设a=list.map((条目,索引)=>{
返回{…条目,
指数
用法:entry.type!==“无序列表项”&&entry.type!==“有序列表项”
}
}).filter(条目=>entry.use).map((条目、索引、条目)=>{
const end=indexlog(moveToNewObject(data.data))切片是数组上的方法,而不是对象上的方法。代码中的数据是一个对象

const a ={a:1,b:2,c:3,d:4}
const b =[1,2,3,4]

//console.log(a.slice(1,3)) //this will return the error    
console.log(b.slice(1,3))

希望有帮助。

您的
数据有一个非常奇怪的结构,这使得诚实变得更加困难。下面的代码段使用了一个函数,该函数在所有部分上使用
map
,如果
rjf
类型是
'unordered-list-item'
'ordered-list-item'
,它会将其移动到
list
类型为
items
的新
rjf
。希望这是你想要的

如果您想要更清晰的代码格式,这里有一把小提琴:
const数据={
数据:[
{
领域:[
{
章节:[
{
rjf:[
{
文本:“样本标题”,
}
]
},
{
rjf:[
{
键入:“段落”,
深度:0,
text:“此网站由以下人员提供:”,
inlineStyleRanges:[],
InlineEntityAges:[]
},
{
“类型”:“有序列表项”,
“文本”:“订购项目A”,
},
{
“类型”:“无序列表项”,
“文本”:“订购的B项”,
}
]
}
]
}
]
}
]
};
常量moveToNewObject=(数据)=>{
常量节=数据[0]。区域[0]。节;//为什么数据是数组?
返回节。映射((节)=>{
如果(第rjf节){
const looseItems=section.rjf.filter((rjf)=>rjf.type&['ordered-list-item','unordered-list-item'],包括(rjf.type));
if(项目长度){
返回{
rjf:[
…第.rjf节,
{ 
键入:“列表”,
项目:松散项目
}
].filter((rjf)=>rjf.type&!['ordered-list-item'、'unordered-list-item']包括(rjf.type))
}
}
返回段;
}
返回段;
})
}
data.data[0]。区域[0]。节=移动对象(data.data);

console.log(data.data)分组的位置
有序列表项
无序列表项
不被维护。例如,在
列表
之后,如果我得到一个
段落
,分组应该停止。无法理解,它只将
有序列表项
无序列表项
分组为
列表
类型。您的新示例显示结果是翻倍的?不是翻倍的,我可以有多个列表项,我想保持它的位置。我已经用当前和预期的问题更新了这个问题。在您提供的当前解决方案中,所有列表项最后都被分组。如果我理解正确,您希望数组的结构是
标题
类型后跟它的内容(即type
列表
),是否希望这样的输出?这可能是可行的(使用
reduce
而不是
map
加上数组分解),但我建议您不要这样做。引入这样的逻辑会使代码很难维护和不可读。数组不是适合这种类型的数据结构,最好使用对象,例如
{heading:,contents:
。如果您从后端获得此输入,后端的工作就是以可读格式提供它。