工作中使用到的js

95 阅读1分钟

易错类

1、为函数的参数设置了默认值,当入参为null时,结果页面报错了。 因为入参为null时,默认值并没有生效

const getStringLength = (curString = "") => {
  return curString.length;
};

const first = getStringLength(null);
const second = getStringLength('xxx');

console.log(first,'first');
console.log(second,'second');

截屏2022-12-12 下午10.43.29.png

2、深拷贝:时间

处理工具

1、金额计算、加减乘除精度问题: NP www.npmjs.com/package/num…

数据处理

1、传入一个数组,和需要累加的key。返回累加结果

import NP from 'number-precision';// 不需要关注精度问题

const accumulator = (array: Record<string, any>[] = [], key: string) => {
  const res = array.reduce((acc, cur) => {
    const curVal = cur[key] || 0;
    return NP.plus(acc, curVal);
  }, 0);
  return res;
};
  

2、数组a是id合集,必须全部包含在数组b内

 const a = [2, 7, 10];
 const b = [
   { id: 1, name: "蔡徐坤" },
   { id: 2, name: "王一博" },
   { id: 5, name: "王嘉尔" },
   { id: 6, name: "易洋千玺" },
   { id: 7, name: "陈飞宇" },
   { id: 8, name: "魏大勋" },
   { id: 10, name: "王鹤地" },
 ];

 // 校验结果
 const checkPass = a.every(curId=>b.some(i=>i?.id===curId));
 console.log('checkPass',checkPass);
  

3、把符合条件的项排序在第一位

方法1:

  const list = [
    { id: 1, name: "蔡徐坤" },
    { id: 2, name: "王一博" },
    { id: 5, name: "王嘉尔" },
    { id: 6, name: "易洋千玺" },
    { id: 7, name: "陈飞宇" },
    { id: 8, name: "魏大勋" },
    { id: 10, name: "王鹤地" },
  ];

  list.sort((item) => {
    if (item?.id === 7) {
      return -1;
    }
    return 0;
  });

方法2:过滤出来(filter、splice),然后放在第一个