Прежде всего, array.map
НЕ предназначен для зацикливания. Это работа array.forEach
. array.map
используется для создания массива из другого массива, дополнительно преобразовывая каждое значение.
this.content.map(data => this.sections = data.sections);
Для этого назначается последний элемент в this.content
- this.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
- перебирает каждый ответ. С помощью GVim вы можете выделять текст и перемещать курсор, а также выбирать пункты меню с помощью мыши. Скопируйте и вставьте, щелкнув правой кнопкой мыши и т.д ... Но я думаю, что это упускает смысл использования VIM.
Вы можете включить мышь с помощью : set mouse = a
(Буква «а» означает включить его во всех режимах)
Вы можете сопоставить определенные действия с щелчком левой и правой кнопки мыши. И есть много уже запланированных действий для работы с ctags и другими вещами.
:help mouse-using