这是我的方案:
  detail: [{
         quantity: Number,
         product:{
            name: String,
            code: Number,
            price: Number
          },
          subtotal: Number
       ]}这是我的验证方法
  const validations = values => {
     const errors = {
       product: {}
       }
  if(!values.detail || 
      !values.detail.length){
   errors.detail = {_error: 'at 
    least one item must be 
        required'}
   }
    else{
 const detailArrayErrors = []
      values.detail.forEach(   
     (item,itemIndex) =>{
       const detailErrors = {}
     if(!item || !item.quantity){
         detailErrors.quantity 
             ='Required'
    detailArrayErrors[itemIndex]=
        detailErrors 
        }
    if(!item || !item.subtotal){
      detailErrors.subtotal 
        = 'required'
   detailArrayErrors[itemIndex]
         = detailErrors
          }
     //How can I access product
      // in validations method
       })
    if(detailArrayErrors.length)
     errors.detail = 
        detailArrayErrors
    }
      return errors;
          }
    export default validations;product是我在detail中嵌套的json对象。Detail是一个数组。我想验证产品。如何访问数组中的嵌套json对象以进行验证?
我试过用来...的,但它不会产生结果。
我在网上搜索,但什么也找不到。
我该怎么做呢?
有谁知道吗?
发布于 2020-02-11 21:03:51
values.detail.forEach(d=> console.log(d.product));要获取无效的数组,例如:
let invalidItems = values.detail.filter(d => !d.product || !d.quantity || 
!d.product.name);要对数组中的每一项执行某些操作:
this.values.detail.forEach(i => 
{
 let detailErrors = {'quantity': null, product: null};
if (!i.quantity)
  {
    detailErrors.quantity= 'Required'
  }
 if (!i.product)
  {
   detailErrors.product = 'Required'
  }
if (i.product && !i.product.price)
  {
    detailErrors.product = {'price' :'Required'}
  }
});https://stackoverflow.com/questions/60169332
复制相似问题