js随笔

validatePhone

function validatePhone (str) {
  if (!str) return false
  return /^(0|86|17951)?(13[0-9]|15[012356789]|17[0678]|18[0-9]|14[57])[0-9]{8}$/g.test(str)
}

createAsyncValidate

function createAsyncValidate (func, message, required = false, trigger = 'blur') {
  return {
    trigger,
    validator: (rule, value, callback) {
      if ((!required && value === '') || func(value) {
        callback() 
      } else {
        callback(new Error(message))
      }
    }
  }
}

对象key 值替换

需求:后端返回的数据和前端需要的数据格式不同,例如前端用了一个组件库,不好修改

// 后端返回数据
result = [
  {
    value: '1',
    list: [
     {
       value: '1-1',
       list: []
     }   
   ]
  }
]
// 前端想将数据中的 value 替换成 label,list 替换成 child,其中 list 不确定有几层

function transformData (arr) {
  return arr.map(item => {
    if (Array.isArray(item.list) {
      return {
        label: item.value,
        child: transformData(item.list)
      }
    } else {
      return {
        label: item.value
      }
    }
 }
}

对象数组去重 (对象中没有函数)

const arr = Array.from(new Set(arr.map(item => JSON.stringfy(item))).map(item => JSON.parse(item)

你可能感兴趣的:(js随笔)