我在Java中写了一段去重的代码,能正常实现去重效果,但是在JavaScript中就无法实现了,怎么回事
JavaScript代码:
<script>
Array.prototype.unique = function () {
var array = Array();
//创建一个新数组,用来存放不同的原数组元素
var Count = 0 , count = 0 , i , j;
/*
* Count:创建新数组下标
* count:计数器,记录重复元素出现的次数
* i,j:数组下标
*/
for (i = 0; i < this.length; i++) {
for (j = 0 ; j < array.length ; j++) {
if (this[i] === array[j]) {
count++;
//两个数组遍历,进行比较,元素重复出现,次数+1
}
}
if (count === 0) {
array[Count] = this[i];
//只有不重复出现的元素,才插入到新数组中
Count++;
//此为新数组下标,保证元素相邻
}
}
return array;
}
var array1 = [1 , 1 , 2 ,34 ,5 ,5 ,5 ,2];
document.write(JSON.stringify(array1));
document.write("<br/>" + JSON.stringify(array1.unique()));
</script>
Java代码:
package test1;
import java.util.Arrays;
public class test6 {
static Object[] unique(Object[] obj) {
Object[] o = new Object[obj.length];
int Count = 0 , count = 0 ,i , j;
for (i = 0 ; i < obj.length ; i++) {
for (j = 0 ; j < o.length ; j++) {
if (obj[i] == o[j]) {
count++;
}
}
if (count == 0) {
o[Count] = obj[i];
Count++;
}
count = 0;
}
return o;
}
public static void main(String[] args) {
Object[] objects = {1 , 1 , 2 ,34 ,5 ,5 ,5 ,2};
System.out.println(Arrays.toString(unique(objects)));
}
}
Java运行结果:
JavaScript运行结果:
代码基本一样,没做什么改动,无法实现不说,就打印一个是什么鬼,谁知道怎么回事
这是根据你的代码优化后的代码
<script>
function quchong(arr) {
var array = Array();
//创建一个新数组,用来存放不同的原数组元素
var Count = 0 ;
var count = 0;
/*
* Count:创建新数组下标
* count:计数器,记录重复元素出现的次数
* i,j:数组下标
*/
for (var i = 0; i < arr.length; i++) {
for (var j = 0 ; j < array .length ; j++) {
if (arr[i] == array [j]) {
count++;
//两个数组遍历,进行比较,元素重复出现,次数+1
}
}
if (count == 0) {
array[Count] = arr[i];//只有不重复出现的元素,才插入到新数组中
//此为新数组下标,保证元素相邻
Count++;
}
count=0;
}
return array;
}
window.onload=function(){
var array1 = [1 , 1 , 2 ,34 ,5 ,5 ,5 ,2,33,33];
console.log(quchong(array1));
}
//document.write(JSON.stringify(array1));
//document.write("<br/>" + JSON.stringify(array1.unique()));
</script>
运行结果