// new 绑定 functionfn () { // 如果是new 关键字来执行函数,相当于构造函数来是实例化对象,那么内部的this指向了当前实例化的对象 console.log(this); // this指向fn(){} } let fn1 = new fn() console.log(fn1); // this指向fn(){}
functionfn2 () { console.log(this); // this指向fn2(){},即this指向当前的实例对象 // 使用return关键字返回对象时,实例化后的对象的this指向return返回的对象 return { name: 'lg' } } let f = new fn2() console.log(f); // f的this指向{name: 'lg'}
var person = { fav: function () { returnthis } } console.log(person.fav()); // this指向person对象 var p = new person.fav() console.log(p, p===person); // p指向fav, false
let arr = [1, 3, 3, 4, 9 ,5, 5, 7, 0, 5] let result = Array.from(newSet(arr))
1 2
let arr = [1, 3, 3, 4, 9 ,5, 5, 7, 0, 5] let result = [...new Set(arr)]
循环遍历
1 2 3 4 5 6
let result = [] arr.forEach(item => { if (result.indexOf(item) === -1) { result.push(item) } })
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// 双重for循环 let len = arr.length let flag; let result = [] for (let i = 0; i < len; i++) { flag = false for(let j=i+1; j < len; j++) { if (arr[i] === arr[j]) { flag = true } } if (!flag) { result.push(arr[i]) } }
ES6的filter函数
1 2 3
let result = arr.filter((item, index) => { return arr.indexOf(item) === index })
reduce函数
1 2 3
let result = arr.reduce((pre, item) => { return pre.includes(item) ? pre : [...pre, item] }, [])
转化为对象的键
1 2 3 4 5
let result = {} arr.forEach((item, index) => { return result[item] = index }) result = Object.keys(result).map(item => ~~item)
排序方式
一旦使用排序,面试官大几率会问你排序算法
1 2 3 4 5 6 7 8 9
// 一旦使用排序,面试官大几率会问你排序算法 let result = [] let temp = arr.sort() let len = temp.length for (let i=0; i<len; i++) { if (arr[i] !== arr[i+1]) { result.push(arr[i]) } }