# 1.移动*
期望
遍历移动
双指针
正则
- 将数组的*号移动到最前面,不能改变数字顺序。
const arr = ['*', '*', '1', '2', '*', '4', '*', '*', '7', '3']; moveStar(arr); console.log(arr); // ['*', '*', '*', '*', '*', '1', '2', '4', '7', '3']
复制成功
1
2
3
4
2
3
4
# 2.千位分隔符
题
解1
解2
解3
const num = 12335667999; console.log(split(num)); // 12,335,667,999
复制成功
1
2
3
2
3
# 3.比较版本号
题
解
/** * 比较两个版本号大小: * 1:参数1大 * 0:一样大 * -1:参数2大 */ const ver1 = '2.11.21'; const ver2 = '1.2.03'; console.log(compare(ver1, ver2)); // 1
复制成功
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 4.手写getElementById
题
深度优先解
深度优先解2
广度优先解
<body> <div> <div> <button id='btn1'>按钮</button> </div> </div> <div> <button id='btn2'>按钮</button> </div> <script> console.log(getElementById('btn1')); // <button id='btn1'>按钮</button> </script> </body>
复制成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 5.合并对象
题
解
const obj1 = {a: 1, b: 2, c: {d: 3}, j: 7}; const obj2 = {a: 4, b: {e: 5}, c: {f: 6}}; console.log(merge(obj1, obj2)); // { a: 4, b: {e: 5}, c: {d: 3, f: 6}, j: 7 }
复制成功
1
2
3
4
5
2
3
4
5
# 6.数据流清理
题
解:架构思路
解
结果
- node: 节点,string
const node = 'NODE_1';
复制成功
1
- columns: 节点排列,二维数组
const columns = [ ['NODE_2', 'NODE_3'], ['NODE_1', 'NODE_4', 'NODE_1'], ['NODE_5', 'NODE_3'], ];
复制成功
1
2
3
4
5
2
3
4
5
- links: 错误的/冗余的连接数据。
const rawLinks = [ { source: 'NODE_2', target: 'NODE_1', value: 3 }, { source: 'NODE_2', target: 'NODE_1', value: 23 }, { source: 'NODE_3', target: 'NODE_1', value: 11 }, { source: 'NODE_1', target: 'NODE_5', value: 53 }, { source: 'NODE_1', target: 'NODE_5', value: 6 }, { source: 'NODE_3', target: 'NODE_3', value: 20 }, ]
复制成功
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 要求生成正确的连接数据
// 1.左侧列节点和右侧列节点必须有连接 // 2.如果原来没有这个连接,新建并且value设置成0 // 3.如果原来有多个这条路径的连接,加起来 // 4.计算出每个node的出入度 console.log(getRightLinks(rawLinks, columns));
复制成功
1
2
3
4
5
2
3
4
5
# 7.八进制加法
题
解
原生
console.log(add('12343234', '42343234')); // 54706470
复制成功
1
v1.4.16