学习javascript已经快两年了,也不知道到了什么程度了。
说说我对javascript的理解,在电脑的世界里,只有数据。
数组,对象,字符串。对这些数据进行操作就可以完成很多业务逻辑,和页面的交互。
对这些数据进行交互会有很多方法,有些效率高(耗时低),有些效率低(耗时高),这就确定你的代码运行的快慢了。
下面是一个测试数组去重的方法。
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title></title> 7 </head> 8 9 <body> 10 11 <script> 12 //检查耗时逻辑 13 let arr1 = Array.from(new Array(100000), (x, index) => { 14 return index 15 }) 16 17 let arr2 = Array.from(new Array(50000), (x, index) => { 18 return index + index 19 }) 20 21 let start = new Date().getTime() 22 console.log('开始数组去重') 23 console.log('去重后的长度', distinct(arr1, arr2).length) 24 25 let end = new Date().getTime() 26 console.log('耗时', end - start) 27 //结束 28 29 //方法一,耗时5108 30 /*function distinct(a, b) { 31 let arr = a.concat(b); 32 return arr.filter((item, index) => { 33 return arr.indexOf(item) === index 34 }) 35 }*/ 36 37 //方法二 38 /*function distinct(a, b) { 39 let arr = a.concat(b); 40 for(let i = 0, len = arr.length; i < len; i++) { 41 for(let j = i + 1; j < len; j++) { 42 if(arr[i] == arr[j]) { 43 arr.splice(j, 1); 44 // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一 45 len--; 46 j--; 47 } 48 } 49 } 50 return arr 51 }*/ 52 53 //方法三,耗时152 54 /*function distinct(a, b) { 55 return Array.from(new Set([...a, ...b])) 56 }*/ 57 58 //方法四,耗时39 59 function distinct(a, b) { 60 let arr = a.concat(b) 61 let result = [] 62 let obj = {} 63 64 for(let i of arr) { 65 if(!obj[i]) { 66 result.push(i) 67 obj[i] = 1 68 } 69 } 70 return result 71 } 72 </script> 73 </body> 74 75 </html>