Я бы сделал это по-современному, вот так:
vm.mappingFields = vm.schema.properties.filter({ isRequired } => isRequired).map(prop => {
source: null,
destination: key,
fieldType: prop.type,
isRequired: prop.isRequired
})
Сначала мы используем метод ES6 Array.filter
, затем просто Array.map
, чтобы сгенерировать новый массив с необходимыми полями и назначить новый сгенерированный массив в vm.mappingFields
.
Также я использовал ES6 Destructuring { isRequired } => isRequired
, чтобы уменьшить код (prop => prop.isRequired
) и сделать его более удобным для чтения.
Еще одна вещь, когда вы генерируете новый массив, isRequired: prop.isRequired
не нужен, поскольку мы знаем, что сюда попали только элементы с isRequired: true
, поэтому я бы изменил его на isRequired: true
Конечно, вы можете достичь того же результата, используя условия forEach
и if
внутри, как упоминали другие участники, но это не так элегантно, как мой ответ. Но, честно говоря, мой метод требует чуть больше тиков для завершения после 2 циклов оценки массива, но помните, что мы пишем код для людей, а не для машин.