常用方法2

142 阅读2分钟

一、非空判断

1.判断字符是否为空
if(strVal || strVal===0){
    // ... 不为空时候去处理
}

取反运算符,以下都为false,如:false、undefined、null、空字符串('')、数字0、数字NaN

2.判断数组是否为空

要注意数组是否被转换为undefined

let arr = []
if (arr.length === 0){
     // ... 为空的时候去处理
}
3.判断对象是否为空
  1. es6中可以使用Object.keys(obj),该方法返回值是对象中属性名组成的数组
if(Object.keys(data).length === 0){
    // ... 为空的时候去处理
}
  1. 将json对象转化为json字符串,再判断该字符串是否为空
4.判断为空的简写方法
if (letiable1 !== null || letiable1 !== undefined || letiable1 !== '') { 
    // ... 不为空
} 
5.用户输入框为空

为空格,制表符,换页符 等,用正则去掉空符来判断

if (str.replace(/(^s*)|(s*$)/g, "").length ==0) { 
    console.log('不能为空')
}

二、浅拷贝/深拷贝

赋值:  赋的是该对象的在栈中的地址,而不是堆中的数据。
浅拷贝: 拷贝后,对象的基本数据类型互不影响,但二级子类型数据会影响
深拷贝: 拷贝后,新的内存地址,数据互不影响
对象的浅拷贝

1、对象的直接遍历赋值

2、ES6中的 let copyObj = Object.assign({}, obj);

3、ES7扩展运算符 let copyObj = { ...obj }
对象的深拷贝

JSON.parse(JSON.stringify())

可以实现数组或对象深拷贝,但不能处理函数和正则

三、数组对象

1. 添加新属性(数组对象)

如:添加1项属性showIndex

arr.forEach((item,index) => {
    item.showIndex = index
})
// 方式 1
let newArr = arr.map( item =>{
    return {...item, isSelected:true}
})
// 方式 2
let newArr = []
arr.map(item => {
  newArr.push(
      Object.assign({},item,{isSelected:true})
    )
})
2. 删除
for (let i = 0; i < length; i++) {
    if (_arr[i] == _obj) {
        if (i == 0) {
            _arr.shift(); //删除并返回数组的第一个元素
            return _arr;
        }
        else if (i == length - 1) {
            _arr.pop();  //删除并返回数组的最后一个元素
            return _arr;
        }
        else {
            _arr.splice(i, 1); //删除下标为i的元素
            return _arr;
        }
    }
}
3.去重(数组对象中,根据1个属性)
// 回显数据去重处理
let obj = {}
let newArr = orgArr.reduce((cur, next) => {
    if (!obj[next.lesseeId]) {
      obj[next.lesseeId] = true
      cur.push(next)
    }
    return cur
}, [])

四、if.else的替代

1.排非策略和三元运算符
if (!user || !password) return throw('数据不能为空!')
2.多条件判断
if (type === 'jpg' || type === 'png' || type === 'gif' || type === 'svg') {
 // ...
}

// 等效于:
if (imgArr.includes(type)) {
  ...
}
3.对象关联的键值对
let enums = {
'A': handleA,
'B': handleB,
'C': handleC
}
function action(val){
    let handleType = enums[val]
    handleType()
}