递归
递归函数的核心是自己调自己;
实现递归的两个核心:
-
找到规律(可以最小粒度去分析一下规律,规律是抽离出重复相关的粒度;)
-
找到结束条件;
深度拷贝
简化版本,初步判断是否是对象类型,如果是对象类型;再去递归对象内部属性;
function deepCopy(obj) {
if(typeof obj !== 'object') return obj;
const newObj = obj instanceof 'Array' ? [] : {};
for(const key in obj) {
if(obj.hasOwnProperty(key)) {
newObj[key] == typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}
扁平化数组&去除重复的元素&升序排序
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
拍平数组
const flagArr = function(arr) {
let newArr = [];
arr.forEach((item,index,arr) => {
if(Array.isArray(item)) {
newArr = newArr.concat(flagArr(item));
} else {
newArr.push(item);
}
})
return newArr;
}
去重函数
const unique = function(arr) {
return Array.from(new Set(arr));
}
升序排序
const sort = (a, b) => a - b;
实现;
console.log(unique(flagArr(arr)).sort(sort))
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];