admin 管理员组

文章数量: 887629


2024年1月12日发(作者:正则表达式任意长度字符串)

JS数组去掉重复数据只保留一条的实现代码

JavaScript数组去重的方法有很多种,下面给出一些常见的实现代码。每种方法的实现原理和优缺点都会进行解释。

方法一:使用Set

```javascript

function uniqueArray(array)

return (new Set(array));

```

使用Set可以去除数组中的重复项,因为Set是一种特殊的数据结构,它只允许存储不重复的值。该方法首先将数组转换为Set,然后再将Set转换为数组,从而得到去重后的数组。该方法的优点是简单易用,但不保证数组的顺序。

方法二:使用filter

```javascript

function uniqueArray(array)

return ((item, index, self) =>

return f(item) === index;

});

```

该方法使用filter函数对数组进行遍历,在遍历过程中使用indexOf函数判断当前元素在数组中的索引是否与它第一次出现的位置一致,如果一致,则保留该元素,否则过滤掉。该方法的优点是保留数组的顺序,但在大数据量的情况下可能会造成性能问题。

方法三:使用reduce

```javascript

function uniqueArray(array)

return ((result, item) =>

if (!es(item))

(item);

}

return result;

},[]);

```

该方法使用reduce函数对数组进行迭代,将结果保存在一个新的数组中。在迭代过程中,使用includes函数判断结果数组中是否已经包含了当前元素,如果不包含,则将该元素添加到结果数组中。该方法的优点是保留数组的顺序,并且在大数据量的情况下性能较好。

方法四:使用对象属性

```javascript

function uniqueArray(array)

const obj = {};

return ((item) =>

return Property(item) ? false : (obj[item] = true);

});

```

该方法首先定义一个空对象,然后使用filter函数遍历数组,对每个元素进行判断。判断的依据是当前元素是否存在于对象的属性中,如果存在则过滤掉,如果不存在,则将该元素添加到对象的属性中,并返回true。该方法的优点是保留数组的顺序,并且在大数据量的情况下性能较好,但需要消耗额外的内存空间。

方法五:使用Map

```javascript

function uniqueArray(array)

const map = new Map(;

return ((item) =>

return !(item) && (item, true);

});

```

该方法使用Map数据结构来实现去重,首先创建一个空的Map对象,然后使用filter函数遍历数组。判断的依据是当前元素是否存在于Map中,如果不存在,则将该元素作为Map的key插入,并返回true。该方法的优点是保留数组的顺序,并且在大数据量的情况下性能较好,但需要消耗额外的内存空间。

方法六:使用for循环嵌套比较

```javascript

function uniqueArray(array)

const result = [];

const len = ;

for (let i = 0; i < len; i++)

let isDuplicate = false;

for (let j = i + 1; j < len; j++)

if (array[i] === array[j])

isDuplicate = true;

break;

}

}

if (!isDuplicate)

(array[i]);

}

}

return result;

```

该方法使用两层for循环进行比较,外层循环遍历数组的每个元素,内层循环从当前元素的下一个位置开始遍历,判断是否与外层循环的元素相等,如果相等则将isDuplicate置为true,并结束内层循环。如果内层循环结束后isDuplicate为false,则将当前元素添加到结果数组中。该方法的优点是不消耗额外的内存空间,但在大数据量的情况下性能较差。

方法七:使用递归

```javascript

function uniqueArray(array)

if ( === 1)

return array;

} else

const first = array[0];

const rest = uniqueArray((1));

return es(first) ? rest : [first, ...rest];

}

```

该方法使用递归的方式进行去重,首先判断数组的长度是否为1,如果是,则直接返回该数组。否则,将数组分割成第一个元素和剩余部分两个数组,并通过递归对剩余部分进行去重。然后判断剩余部分是否包含第一个元素,如果包含,则返回剩余部分,否则将第一个元素与剩余部分连接起来。该方法的优点是保留数组的顺序,并且使用递归算法能够应对任意长度的数组,但在大数据量的情况下性能较差。

除了上述的方法之外,还可以使用一些第三方库来实现数组去重,例如lodash和underscore等。这些库提供了更多的数组处理功能,可以进一步简化去重的操作。

总结:本文介绍了JavaScript中常见的数组去重方法,包括使用Set、filter、reduce、对象属性、Map、for循环嵌套和递归等方法。每种方法的实现原理和优缺点都有所介绍,可以根据实际需求选择适合的方法进行实现。


本文标签: 数组 方法 使用 元素 判断