在此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



当然,在内部使用forEachif条件也可以达到与其他贡献者相同的结果,但这并不如我的回答那么优雅。但是老实说,自从2个数组周期进行评估以来,我的方法需要花费更多的时间才能完成,但是请记住,我们是为人类而不是为机器编写代码。

07-24 20:47