为什么这个世界需要手撕代码?
// 递归数组扁平化
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数据结构去重
。。。
// 主要是借助 __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;
}