У меня есть несколько массивов, которые мне нужно перебрать.
Ниже приведен код, который я написал, как я могу избежать нескольких forEach.
@Input() content: any;
public sections:any;
ngOnInit() {
this.content.forEach(content => {
content.block.forEach(response => {
this.service.createComponent(response, type);
});
});
}
Как я могу уменьшить количество строк выше и улучшить качество кода?
не уверен, как вы ожидаете, что не сделаете две петли....
да. и this. sections как array
SO не является основным местом для обзор кода, может быть Обзор кода. Кроме того, запрос улучшение кода является слишком широким и основанным на мнении, что здесь не по теме.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Прежде всего, array.map НЕ для зацикливания. Это работа array.forEach. array.map используется для создания массива из другого массива с необязательным преобразованием каждого значения.
this.content.map(data => this.sections = data.sections);
Что это делает, так это присваивает последний элемент в this.contentthis.sections. Для этого не нужно array.map. Вы можете просто получить последний элемент через его индекс.
this.sections = this.content[this.content.length - 1]
Вы не можете избежать нескольких циклов, если ваши данные вложены. Но что вы могли бы сделать, чтобы улучшить читаемость, так это превратить вложенный цикл в плоскую серию циклов. В вашем коде вам нужен response. Итак, давайте сначала сгладим this.sections, тогда пройдемся по нему.
this.sections
.map(rjfBlock => rjfBlock.rjf)
.reduce((c, rjf) => [...c, ...rjf], [])
.forEach(response => {
const type = this.contentMappings[response.type]
this.service.createComponent(response, type)
})
Давайте разберем это:
.map собирает все rjf массивы в массив. На данный момент у нас есть массив массивов..reduce сглаживает массив, объединяя каждый массив в один массив. На данный момент у нас есть одноуровневый массив ответов..forEach - перебирает каждый ответ.получаю эту ошибку this.sections.map is not a function, но при проверке this.sections показывает список массивов
Ваш вопрос не ясен. Но
this.content.map(data => this.sections = data.sections)устанавливаетthis.sectionsна последнееdata.sectionsизcontent