算法相关

# 算法相关

# 1.求1加到n,递归如何实现?(高频,2次笔试遇到)

// let end = n
let end = n
let sum = 0
function sums(m) {
    if (m > 1) {
        sum = sums(m -1) + m
    } else {
        sum = 1
    }
    return sum
}
console.log(sums(end))
1
2
3
4
5
6
7
8
9
10
11
12

# 2.js快速创建一个1-1000/100的数组--setInterval,clearInterval的性能最优

// 法1:
console.time('test')
var arr1 = new Array(1000);
for(var i=0;i<arr1.length;i++){
    arr1[i] = i;
}
console.timeEnd('test')
// test: 0.385009765625 ms
// 法2:
console.time('test')
const arr = new Array(1000).fill(0)
console.log(arr, 333)
console.timeEnd('test')
// test: 1.56298828125 ms
// 法3:
console.time('test')
Array.from(new Array(1000), (v,i) => { return  i});
console.timeEnd('test')
// test: 0.212890625 ms

// 法4:
console.time('test')
const zero = [].slice.apply(new Uint8Array(1000000))
console.log(zero)
console.timeEnd('test')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 法1:循环赋值
console.time('test')
var arr1 = new Array(100);
for(var i=0;i<arr1.length;i++){
    arr1[i] = i;
}
console.log(arr1);
console.timeEnd('test')
// test: 0.873046875 ms

// 法2:push实现
console.time('test')
var arr2 = new Array();
for(var i=0;i<100;i++){
    arr2.push(i);
}
console.log(arr2);
console.timeEnd('test')
// test: 1.0107421875 ms

// 法3:while
console.time('test')
var arr3 = new Array();
var i = 0;
while(i<100){
    arr3.push(i);
    i++;
}
console.log(arr3);
console.timeEnd('test')
// test: 1.032958984375 ms

// 法4:do while
console.time('test')
var arr4 = new Array();
var i = 0;
do{
    arr4.push(i);
    i++;
}
while(i<100)
console.log(arr4)
console.timeEnd('test')
// test: 0.987060546875 ms

// 法5:
console.time('test')
var arr5 = Object.keys(Array.apply(null, {length:100})).map(function(item){
    return +item;
});
console.log(arr5);
console.timeEnd('test')
// test: 1.18212890625 ms

// 法6:
console.time('test')
var arr6 = Array.from({length:100}, (v,k) => k);
console.log(arr6);
console.timeEnd('test')
// test: 0.97021484375 ms

// 法7
console.time('test')
var arr7 = Array.from(Array(100), (v,k) =>k);
console.log(arr7);
console.timeEnd('test')
// test: 0.8798828125 ms

// 法8:
console.time('test')
var arr8 = new Array(100).keys();
console.log(Array.from(arr8));
console.timeEnd('test')
// test: 0.696044921875 ms

// 法9:
console.time('test')
var arr9 = [];
var i = 0;
var timer = setInterval(function(){
    arr9[i] = i++;
    if(i>=100){
        clearInterval(timer);
        console.log(arr9);
    }
},1);
console.timeEnd('test')
// test: 0.12890625 ms

// 法10:
console.time('test')
var arr10 = [];
var i = 0;
function MakeArray(num){
    if(i<num){
        arr10[i] = i++;
        MakeArray(num);
    }
    return arr10;
}
console.log(MakeArray(100));
console.timeEnd('test')
// test: 1.334228515625 ms

// 法11:

console.time('test')
var arr11 = new Array(100).toString().split(',').map(function(item,index){
    return index;
});
console.log(arr11);
console.timeEnd('test')
// test: 1.178955078125 ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113