在此forEach中,我将一些字段推入现有数组中。
如何过滤出prop.isRequired = false?
因此:(仅)循环schema.properties中的所有内容,其中isRequired = true;
angular.forEach(vm.schema.properties, function (prop,key) {
vm.mappingFields.push({ //this is an array
source: null, //this gets pushed
destination: key, //this gets pushed
fieldType: prop.type, //this gets pushed
isRequired: prop.isRequired, //this gets pushed
});
});
最佳答案
我将以这种现代方式进行操作:
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个数组周期进行评估以来,我的方法需要花费更多的时间才能完成,但是请记住,我们是为人类而不是为机器编写代码。