隔离期整理-常用手写方法

140 阅读1分钟

7:数组常用方法

  • 改变原数组: push pop shift unshift sort reverse splice

  • 不改变原数组: concat join split toString slice


8:数组去重

  • 1: es6提供的方法

  • 2: 双循环遍历

  • 3:indexOf

  • 4:includes

  • 5:对象的属性

[...new Set([1,2,2,4])]

9:对象的拷贝之深拷贝&&浅拷贝

function deepClone(origin, target){
	var target = target || {};
	var toStr = Object.prototype.toString()
	var arrStr = "[object Array]";
	for(var prop in origin) {
		if(origin.hasOwnProperty(prop)) { // 判断是不是原型链上的属性或者是自有属性
			if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object'){ // 判断属性是不是原是值
			if(toStr.call(origin[prop]) == arrStr){ // 判断属性是对象还是数组
				target[prop] = []
			} else {
				target[prop] = {}
			}
			// 简化写法
			// target[prop] = toStr.call(origin[prop]) == arrStr ? [] :{}
			deepClone(origin[prop],target[prop])
			}  else { // 原始值
				target[prop] = origin[prop]
			}
		}
	}
	return target;
	}