当前,我正在使用嵌套的forEach遍历JSON数据。但是我想知道在Typescript或RXJS中还有其他任何简单可行的方法可用,因为我在少数情况下也对Observable进行了迭代。 这是代码段和stackblitz https://stackblitz.com/edit/angular-dz3wl2?file=src%2Fapp%2Fapp.component.ts
遍历JSON应该返回htmltypes数组和inlineTags数组中具有“ type”属性的对象。有人可以在不使用forEach方法的情况下指导我检索想要的对象吗?
content.data.areas.forEach(sectionBlock => {
sectionBlock.sections.forEach(obj => {
obj.htmltypes.forEach(val => {
console.log(val);
if (val.inlineTags.length > 0) {
val.inlineTags.forEach(tag => {
console.log(tag);
})
}
})
})
})
答案 0 :(得分:1)
没有比这更简单的方法了,但是您可以减少它与某些rxjs或数组运算符(例如Array.prototype.flatMap
)的嵌套,但是要使用它,您应该像core-js/es7/array/flat-map
那样包含polyfill。您的代码看起来像
content.data.areas
.flatMap(sectionBlock => sectionBlock.sections)
.flatMap(obj => obj.htmltypes)
.flatMap(val => val.inlineTags)
.forEach(tag => console.log(tag));
使用rxjs可以通过类似的方式完成
from(content.data.areas).pipe(
concatMap(sectionBlock => sectionBlock.sections)
concatMap(obj => obj.htmltypes)
concatMap(val => val.inlineTags)
).subscribe(tag => console.log(tag));