js知识点积累

2020-06-10  本文已影响0人  青争小台

一、三目运算符

基础版:

let a=8,b=-9,c=0;
        //三目写法
        b>a0?c=1:c=2;
      //转换成if写法是这样的
        if(b>a){
            c=1
        }else{
            c=2
        }
        console.log(c)

进阶版:

let a=8,b=-9,c=0;
        //三目写法
        b>a?b>0?c=1:c=2:c=3;
         //转换成if写法是这样的
//      if(b>a){
//          c=1
//      }else if(b>0){
//          c=2
//      }else{
//          c=3
//      }
        console.log(c)

参考:https://www.jianshu.com/p/7e272416fcdd

二、elementui input只能输入数字

<el-input
onkeyup="this.value = this.value.replace(/[^\d.]/g,'');"
maxlength="8"
>
限制输入数字,且长度最大为8
</el-input>

三、JS 浮点数计算 Bug 处理

:2.2+2.1

function add(a, b) {
    var c, d, e;
    try {
        c = a.toString().split(".")[1].length;
    } catch (f) {
        c = 0;
    }
    try {
        d = b.toString().split(".")[1].length;
    } catch (f) {
        d = 0;
    }
    return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;
}

:1.4-1.1

function sub(a, b) {
    var c, d, e;
    try {
        c = a.toString().split(".")[1].length;
    } catch (f) {
        c = 0;
    }
    try {
        d = b.toString().split(".")[1].length;
    } catch (f) {
        d = 0;
    }
    return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;
}

:2.2*2.2

function mul(a, b) {
    var c = 0,
        d = a.toString(),
        e = b.toString();
    try {
        c += d.split(".")[1].length;
    } catch (f) {}
    try {
        c += e.split(".")[1].length;
    } catch (f) {}
    return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
}

:2.1/0.3

function div(a, b) {
    var c, d, e = 0,
        f = 0;
    try {
        e = a.toString().split(".")[1].length;
    } catch (g) {}
    try {
        f = b.toString().split(".")[1].length;
    } catch (g) {}
    return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), mul(c / d, Math.pow(10, f - e));
}

参考自:https://www.jianshu.com/p/7381a2369bd2

四、npm 时 -D和-S的区别

npm install 依赖 (已经安装上了 , 但在package.json 中没有,不能通过npm i 安装)
npm install 依赖 --save (已安装,依赖包的名称在package.json的dependencies中, 可通过npm i 安装)
npm install 依赖 --save-dev (已安装,依赖包的名称在package.json的devDependencies中, 可通过npm i 安装)

dependencies 和 devDependencies区别
devDependencies 里面的插件只用于开发环境,不用于生产环境,而 dependencies 是需要发布到生产环境的。

五、获取url参数

const getQueryVariable = () => {
  const query = window.location.search.substring(1),
    vars = query.split('&'),
    obj = {};
  for (const i in vars) {
    let pair = vars[i].split('=');
    obj[pair[0]] = pair[1];
  }
  return obj;
};
//如:http://0.0.0.0:9000/details.html?proId=D1785C412E38C06CED&flag=1
//{flag: "1",processId: "D1785C412E38C06CED"}

六、数组求差集并集

普通数组

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var b = [1, 2, 3, 4, 5]
let arrDiff = a.filter((key) => !b.includes(key))//差集
let arrInter = a.filter((key) => b.includes(key))//交集

对象数组

var arr1 = [
      { id: 1, name: 'a' },
      { id: 2, name: 'b' },
      { id: 3, name: 'c' },
      { id: 4, name: 'd' },
    ]
    var arr2 = [
      { id: 1, name: 'a' },
      { id: 2, name: 'b' },
    ]
    //差集
    let arrDiff = [...arr1].filter((x) => [...arr2].every((y) => y.id !== x.id))
    //交集
    let arrInter = [...arr1].filter((x) => [...arr2].some((y) => y.id === x.id))
上一篇 下一篇

猜你喜欢

热点阅读