在面试中,数组去重是一个常见的问题,主要考察应聘者对数据结构和算法的理解与应用能力。以下提供两种数组去重的方法,并给出相应的解释和分析。
方法一:使用Set数据结构
Set是一种特殊的数据结构,它类似于数组,但成员的值都是唯一的,没有重复的值。利用Set的这一特性,我们可以轻松实现数组的去重。
具体步骤如下:
- 创建一个Set对象,并将原数组作为参数传入。
2 由于Set会自动去重,因此此时Set中存储的就是去重后的数据。
- 使用Array.from()方法将Set对象转换回数组。
示例代码如下:
fuction fn(ary) {
let s new Se(ary);
return Arra.from(s);
}
let arr = [12, 2, 4, 12, 85, 5, 62, 1];
console.log(fn(arr)) // 输出 [12, 2, 4, 85, 62, 1]
方法二:使用indexOf方法
indexOf方法用于查找数组中某个元素的第一个匹配项并返回其索引。如果未找到匹配项,则返回-1。我们可以利用这一特性来判断某个元素是否已经在新的去重数组中出现过。
具体步骤如下:
创建一个空的新数组,用于存储去重后的数据。
遍历原数组中的每个元素。
对于每个元素,使用indexOf方法检查它是否已经在新的去重数组中出现过。如果未出现(即indexOf返回-1),则将其添加到新数组中。
遍历完成后,新数组就是去重后的结果。
注意:虽然这种方法可以实现重,但其效率相对较低,因为对于每个元素都需要遍历一次新数组来检查是否已存在。如果原数组较大,可能会导致性能问题。
示例代码如下(接续上面的代码):
function fn2(array) {
let newArray = [];
for (let i = 0, len =array.length; i \u003c len; i++) {
let item = array[i];
if (newArray.indexOf(item) === -1) {
newArray.push(item);
}
eturn newArray;
}
console.log(fn2(arr)); // 输出 [12, 2, 4, 85, 6, 1]
在面试中,可以根据实际情况选择合适的方法进行数组去重,并向面试官解释清楚所选方法的原理和优缺点。同时,也可以尝试自己思考其他可能的去重方法,以展示自己的思维能力和编程技巧。linklinklink