ranhao算法笔记(3)数组去重/扁平化 instanceof

199 阅读1分钟

为什么这个世界需要手撕代码?

  • 扁平化

// 递归数组扁平化
function flatten(arr){
    var result = [];
    for(let i = 0;i < arr.length;i++){
        if(Array.isArray(arr[i])){
            result = result.concat(flatten(arr[i]));
        }else{
            result.push(arr[i]);
        }
    }
    return result;
}

// 字符串数组扁平化
// 这个是js的特性,但是局限性挺大的。
function flatten2(arr){
    return arr.toString().split(",");
}

// 
  • 去重

let unique = function(arr){
    let hashTable={};
    let data=[];
    for(let i=1;i<arr.length;i++){
        if(!hashTable[arr[i]]){
            hashTable[arr[i]]=true;
            data.push(arr[i]);
        }
    }
    console.log(data)
}

// set数据结构去重
。。。
  • instanceof

// 主要是借助 __proto__ 与prototype 循环判断。
function myInstanceof(targetObj,targetClass){
    if(!targetObj || !targetClass ||!targetObj.__proto__ || !targetClass.prototype){
        return false;
    }
    let current = targetObj;
    while(current){
        if(current.__proto__ === targetClass.prototype){
            return true
        }
        current=current.__proto__;
    }
    return false;
}