面试中遇到的问题

本文共 516 字 预计花费 2 分钟

收集一些面试中的问题,变得更强。

数组都有哪些方法?

篇幅有点长, 单开一篇文章。 ➡️ 数组和它的方法们

官方文档

文中另提到利用数组模拟队列

数组处理

  1. 将字符串改写为驼峰命名方式。例如: 输入 'get_user_by_id', 输出 getUserById

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function transfor (str) {
var arr = str.split('_'), // 将原始字符串分割成数组 [get, user, by, id]
sec_arr = []; // 用来缓存遍历上述数组的每一个元素 => [g,e,t] [u,s,e,r] [b,y] [i,d]

for (var i = 1 ;i < arr.length; i++) {
sec_arr = arr[i].split(''); // 更新为当前遍历到的元素
sec_arr[0] = sec_arr[0].toUpperCase(); // 对首字母进行大写处理并覆盖原值
arr[i] = sec_arr.join(''); // 将得到的新值重新拼成字符串复制给大元素,进入下一轮循环。
}

return arr.join(''); // 循环结束,将大元素数组拼成数组返回
}

console.log(transfor('get_user_by_id'));
  1. 数组去重

1
2
3
4
5
6
7
8
9
10
// 遍历数组,判断当前元素是否存在于 final 数组,没有则保留
function unique1(arr) {
var final = [];
for (var i = 0; i < arr.length; i++) {
if (final.indexOf(arr[i]) == -1) {
final.push(arr[i]);
}
}
return final;
}
1
2
3
4
5
6
7
8
9
10
// 遍历当前数组元素,如果当前元素第一次出现的位置 == 当前索引,则保留
function unique2(arr) {
var final = [];

for(var i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) == i) final.push(arr[i]);
}

return final;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 先排序,将原数组的第一元素放入 final 数组中作为起始的比较 (以防下面的循环判断第一次出现错误影响执行)。

// 以 final 数组当前的最后一项作为比较基础,若循环到的与 final 最后一项不等则保留。
function unique3(arr) {
arr.sort();
var final = [arr[0]];

for(var i = 1; i < arr.length; i++) {
if (arr[i] !== final[final.length - 1]) {
final.push(arr[i]);
}
}

return final;
}
  1. 生成指定范围的 10 个不重复随机数,并排序。

1
2


Copyright © 2017 - 2018 空脑壳 All Rights Reserved.

冀ICP备17022284号