js小应用之去掉数组中的重复元素

本文介绍了一种使用JavaScript实现的数组去重算法。通过创建一个空的JSON对象来记录数组中的元素,确保每个元素只被保留一次。该方法首先检查输入数组是否已定义,若未定义则赋予一个空数组;接着利用JSON对象的键值特性实现数组元素的唯一性,最后清空原数组并重新填充去重后的元素。
[b]1、代码[/b]
function unique(data){
data = data || [];
var a = {};
for (var i=0; i<data.length; i++) {
var v = data[i];
if ( typeof(a[v]) == 'undefined'){
a[v] = 1;
}
};
data.length=0;
for (var i in a){
data[data.length] = i;
}
return data;
}

// test function 'unique'
var d = ['d','ds','dd','d','ds','a','ds'];
var nd = unique(d);
var str = "";
for(var i=0;i<nd.length;i++){
str += nd[i] + ',';
}
alert(str);//d,ds,dd,a,



[b]2、说明[/b]
// :
// : 兼容处理,如果data未定义,则赋一个空数组。注意:这里没有使用 var data = data || [];
// : 新new一个空json对象。注意:是json对象,而非数组。
// :
// : 获取 data[i]的值 v
// : 如果 a 中不存在 以 v 为索引的值,则新建一个,并为其赋值为 1 。如果存在,则不会向a中插入任何值。
// :
// :
// :
// : 清空data (相当于 data = [] ;)
// : 其实json对象 a 的索引,就是 data 中的每一个值
// : 将a的索引 还原 给 data
// :
// : 返回



引自:
[url]http://akunamotata.iteye.com/blog/511368[/url]
### 数组去重的多种实现方式 在不同的编程语言中,去除数组中的重复元素可以通过多种方法实现。以下是几种常见编程语言的具体实现。 #### C 语言 在 C 语言中,通过双层循环逐一比较数组中的元素,并将重复元素移除。这种方法的时间复杂度较高,但在某些场景下仍然适用[^5]。 ```c #include<stdio.h> #define N 12 int main(){ int a[N] = { 1, 1, 2, 3, 3, 4, 6, 4, 8, 6, 9, 8}; int i = 0, j = 0, n = N; printf("==========去重之前=========\n"); for (i = 0; i < n; i++){ printf("%d ", a[i]); } for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; ) { if (a[i] == a[j]) { for (int k = j; k < n - 1; k++) { a[k] = a[k + 1]; } --n; } else { ++j; } } } printf("\n==========去重之后=========\n"); for (i = 0; i < n; i++) { printf("%d ", a[i]); } return 0; } ``` 此代码展示了如何手动遍历数组并删除重复项的过程。 --- #### Java 实现 Java 提供了 `HashSet` 数据结构,能够自动处理重复数据。因此,在 Java 中可以更高效地完成数组去重操作[^2]。 ```java import java.util.HashSet; public class RemoveDuplicates { public static void main(String[] args) { Integer[] numbers = {1, 2, 3, 3, 4, 4, 5}; HashSet<Integer> uniqueNumbers = new HashSet<>(); for (Integer number : numbers) { uniqueNumbers.add(number); } // 将HashSet中的元素转换回数组 Integer[] newArray = new Integer[uniqueNumbers.size()]; int index = 0; for (Integer num : uniqueNumbers) { newArray[index++] = num; } System.out.println(java.util.Arrays.toString(newArray)); } } ``` 利用集合类的特点简化了逻辑判断过程。 --- #### JavaScript 方法 JavaScript 支持现代语法特性,比如 `Set` 对象可以直接用于过滤掉重复值[^3]。 ```javascript function removeDuplicates(array) { return Array.from(new Set(array)); } // 示例用法 const originalArray = [1, 2, 3, 3, 4, 4, 5]; const uniqueArray = removeDuplicates(originalArray); console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5] ``` 这种方式简洁明了,适合快速开发需求。 --- #### PHP 解决方案 PHP 同样具备内置函数支持这一功能,例如 `array_unique()` 函数可直接调用来获取无重复版本的数据集[^4]。 ```php <?php $array = array(1, 2, 3, 3, 4, 4, 5); $unique_array = array_values(array_unique($array)); print_r($unique_array); ?> ``` 以上脚本演示了一个简单的例子说明如何去掉列表里的冗余项目。 --- ### 总结 每种语言都有其特定的最佳实践来解决此类问题。选择哪种取决于具体的应用环境和个人偏好等因素考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值