实际项目开发中遇到的代码优化(一)🐒

147 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

优化

或许不是最优,但一定比优化前的更优雅


拼接数组转成id数组,在转成拼接字符渲染

现需将 ['14_王五', '16_孙七', '13_李四'] 这样的拼接数组分别转化为id和name的数组(后端需要这样的格式),然后再转成上述样式的拼接的字符串进行前端显示。唉,web仔就是这样,如果有后端尽心竭力的将数据处理好给你,请你一定要善待他,多情他吃几顿烧烤。

const ccUser = ['14_王五', '16_孙七', '13_李四']

const changeUser = (list) => {
  const _result = {
    idList: [],
    nameList: [],
  }
  list.forEach((item) => {
    _result.idList.push(item.split('_')[0]);
    _result.nameList.push(item.split('_')[1]);
  })
  _result.idList = _result.idList.join(',');
  _result.nameList = _result.nameList.join(',');
  return _result;
}

console.log(changeUser(ccUser))   // { idList: '14,16,13', nameList: '王五,孙七,李四' }
let a = '14,16,13'
let b = '王五,孙七,李四' 

const changeJoinUser = (idList, nameList) => {
  let _list1 = idList.split(',');
  let _list2 = nameList.split(',');
  if(_list1.length === 0 || _list2.length===0){
    return [];
  }
 return _list1.map((item, index) => {
    return `${item}_${_list2[index]}`;
  })
}
​
console.log(changeJoinUser(a, b))   // [ '14_王五', '16_孙七', '13_李四' ]

将提交文件的某些字段重新汇编成对象

如:需要将上传文件的 name,group,path字段组合成新对象提交给后端,fileList 随上传文件数量改变。

只需遍历 fileList 长度即可,然后将需要的属性push 进新对象。

之前写法:创建个新对象,依据fileList 长度for循环,根据下标存进新数组里,写完后并不优雅

优化后:

  const sendFile = (sealFiles) => {
    return sealFiles.fileList.map((item) => ({
      name: item.name,
      group: item.response.data.group,
      path: item.response.data.path,
    }));
  };

Ant的Upload组件限制上传文件类型

限制上传文件类型,比如PDF

之前写法:依据上传文件的fileList数组,找到name属性,利用split(’.‘)[1] 截取文件类型.然后判断时候时候是想要的格式。

这种判断有个很大弊端,如果名字出现 客户.奇怪.命名.pdf 这种奇葩方式,那直接寄。

后面才用substr( -4 ),直接判断后面三位是不是pdf形式,但MDN一查,发现这API后续有被禁用的风险,所以转向substring,原理大致相同。

//优化前
file.name.split('.')[1]
//小优化,后续API可能被弃用
file.name.substr(-4)
//优化后
file.name.substring(file.name.length - 4, file.name.length) !== '.pdf'

一顿操作下来,觉得完美至极,一查文档,发现人家有内定的API可限制文件类型,靠!!我是🤡

持续更新...