Skip to content
On this page

简单if判断

正常情况下我们如果写一段简单的if判断 比如说如下

js
const isLike = true

const todo = () => console.log('你像她')

if(isLike) todo() 

我们可以借助&&

js
isLike && todo()

数组合并去重

数组合并 之前我们可以这样写

js
let arr1 = [1,2,3,4,5]

let arr2 = [2,3,4,5,6]

合并 arr1.concat(arr2)

我们可以使用es6解构赋值

js
[...arr1,...arr2]

这种方法进行合并

判断对象是否为空

我使用一种简单的方法

js
const obj = {};

const isobjnull = (JSON.stringify(obj) == "{}");

console.log(isobjnull);//true

//这种方法具有局限性 不能判断undefined,function, symbol
const obj1 = {
     a:undefined,
     b:function(){},
     c:Symbol()
}
const isobj1null = (JSON.stringify(obj1) == "{}");

console.log(isobj1null);//true

使用for in 配合 hasOwnProperty for in 会遍历自身及原型

js
Object.prototype.age = 18

const obj = {}; 

const isEmptyObject = (obj) => {
    let isNull = true
    for( let attr in obj) {
        if(obj.hasOwnProperty(attr)) {
            isNull = false
            break
        }
    }
    return isNull
}

console.log(isEmptyObject(obj));//true

使用Object.keys返回对象属性的数组(可枚举属性)

js
const obj = {}; 

const arr = Object.keys(obj);

alert(arr.length == 0);//true

使用 Object.getOwnPropertyNames(可枚举和不可枚举 Symbol除外)

js

Object.defineProperty(obj, 'name',{
    value:'xiaolaji',
    enumerable:false
})

console.log(Object.getOwnPropertyNames(obj).length===0);//false

const age = Symbol()
const obj = {
        [age]:18
    };

console.log(Object.getOwnPropertyNames(obj));//[]
console.log(Object.getOwnPropertyNames(obj).length===0);//true

终极方案 Reflect.ownKeys

js

const age = Symbol()
const obj = {
    [age]:18,
    name:'xiaolaji'
};

console.log(Object.getOwnPropertyNames(obj));//['name']

console.log(Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)));//['name', Symbol()]
//Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj))
//结合成
console.log(Reflect.ownKeys(obj));//['name', Symbol()]
console.log(Reflect.ownKeys(obj).length === 0);//false

判断数组是否存在并且长度大于0

我这样判断的

js
arr && arr.length > 0

对数组中的所有值求和

js
var numbers = [1, 2, 3, 4];

var sum = numbers.reduce((x, y) => x + y);

console.log(sum); // 10

🏀 🏀 🏀