学习javascript已经快两年了,也不知道到了什么程度了。

说说我对javascript的理解,在电脑的世界里,只有数据。

数组,对象,字符串。对这些数据进行操作就可以完成很多业务逻辑,和页面的交互。

对这些数据进行交互会有很多方法,有些效率高(耗时低),有些效率低(耗时高),这就确定你的代码运行的快慢了。

下面是一个测试数组去重的方法。


 <!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
</head> <body> <script>
//检查耗时逻辑
let arr1 = Array.from(new Array(100000), (x, index) => {
return index
}) let arr2 = Array.from(new Array(50000), (x, index) => {
return index + index
}) let start = new Date().getTime()
console.log('开始数组去重')
console.log('去重后的长度', distinct(arr1, arr2).length) let end = new Date().getTime()
console.log('耗时', end - start)
//结束 //方法一,耗时5108
/*function distinct(a, b) {
let arr = a.concat(b);
return arr.filter((item, index) => {
return arr.indexOf(item) === index
})
}*/ //方法二
/*function distinct(a, b) {
let arr = a.concat(b);
for(let i = 0, len = arr.length; i < len; i++) {
for(let j = i + 1; j < len; j++) {
if(arr[i] == arr[j]) {
arr.splice(j, 1);
// splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
len--;
j--;
}
}
}
return arr
}*/ //方法三,耗时152
/*function distinct(a, b) {
return Array.from(new Set([...a, ...b]))
}*/ //方法四,耗时39
function distinct(a, b) {
let arr = a.concat(b)
let result = []
let obj = {} for(let i of arr) {
if(!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
}
</script>
</body> </html>

 

原文链接

05-16 23:53