数组去重等数组实例

一、删除指定的数组元素

要求:将数组 [2,0,45,3,9,0,47,0] 中的 0去掉,然后形成一个不包含 0的新数组;

实现思路:

1、需要一个新数组用于存放筛选之后的数据。

2、遍历原来的数组,把不是 0的数据添加到新数组里面(此时要注意采用 数组名+索引名 的格式接收数据)

3、新数组里面的个数,使用length 不断累加;

var arr= [2,0,45,3,9,0,47,0];
var newArr = [];
for(var i=0,j=0;i<arr.length;i++){
    if(arr[i]!=0){
    //新数组应该从 0开始,依次递增
    newArr[newArr.length] =arr[i];
    }
}
console.log(newArr);

二、数组去重

要求:删除数组 [1,2,3,4,2,1,4,5,6] 中的重复的元素。

实现思路:

1、首先获取数组中的每一个元素

2、从当前元素的下一个元素进行比较

3、运用条件判断判断两个循环获取的元素是否相等;

4、如果相等则证明出现了重复的元素,就删除aa对应的元素。

5、当删除了aa所对应的元素,后面的元素会自动补上一位,此时就不会比较当前的元素,因此需要再比较一次aa所在位置的元素。

为了达到这个效果就需要对 aa自减(aa--),需要写在内部的for循环里面,删除了一个元素之后才aa--;

var arr=[1,2,3,4,2,1,4,5,6];
for(var i=0;i<arr.length;i++){
    for(var aa=i+1;aa<arr.length;aa++){
        if(arr[i] == arr[aa]){
            arr.splice(aa,1);
            aa--
        }
    }
}console.log(arr);

 三、数组中新增元素

要求:新建一个数组,里面存放10个整数(1—10);

实现思路:

1、使用循环来追加数组;

2、声明一个空数组 arr;

3、循环中的计数器 i 可以作为数组元素存入。

4、由于数组的索引号是从 0开始的,因此计数器从 0开始更加合适,存入的数组元素要 +1;

注意:

可以通过修改数组索引的方式追加数组

不能直接给数组名进行赋值,否则会覆盖掉以前的数据;

新增数组元素,可以通过修改索引号,追加数组元素;

var arr=[];
for(var i = 0;i<10;i++){
    arr[i] = i+1;
}
console.log(arr);

四、筛选数组

要求:将数组 [2,0,6,1,56,0,94,2]中大于 10的元素筛选出来,放到新的数组中。

实现思路:

1、声明一个新的数组用于存放新的数组 newArr。

2、遍历原来的旧数组,找出大于等于 10的元素;

3、依次追加给数组 newArr;

讨论多种方法实现效果,核心思路就是(新数组应该从0开始,依次递增)

方法一:

var arr= [2,0,6,12,1,56,0,94,2];
var newArr = [];
for(var i=0,j=0;i<arr.length;i++){
    if(arr[i]>10){
    //新数组应该从 0开始,依次递增
    newArr[j] =arr[i];
    j++;
    }
}

 方法二:

也可以将 j++ 直接写在索引 ( [ ] )里面。

var arr= [2,0,6,12,1,56,0,94,2];
var newArr = [];
for(var i=0,j=0;i<arr.length;i++){
    if(arr[i]>10){
    //新数组应该从 0开始,依次递增
    newArr[j++] =arr[i];
    }
}
console.log(newArr);

方法三:

使用 length属性获得 newArr 数组的长度;

刚开始的时候 newArr数组是空的,所以newArr.length刚开始的结果就是 0;

length自动检测数组的实现。

var arr= [2,0,6,12,1,56,0,94,2];
var newArr = [];
for(var i=0;i<arr.length;i++){
    if(arr[i]>10){
    //新数组应该从 0开始,依次递增
    newArr[newArr.length] =arr[i];
    }
}
console.log(newArr);

五、翻转数组

要求:将数组 ['一','二','三','四','五'] 的内容反过来存放,输出: ['五','四','三','二','一']

实现思路:

1、声明一个新数组 newArr;

2、将旧的数组索引号第 4个取过来(arr.length - 1),给新数组索引号第 0个元素(new.length)

3、采取递减的方式 i--;

把 arr 原数组的最后一个元素取出来给 新数组作为第一个

  • 将第 4 个给新数组第 0 个;
  • 将第 3 个给新数组第 1 个;
  • 将第 2 个给新数组第 2 个;
  • 将第 1 个给新数组第 3 个;
  • 将第 0 个给新数组第 4 个;

旧的数组是一个递减的过程 43210(5-1);新的数组 是一个递增的过程

var arr =['一','二','三','四','五'];
var newArr=[];
for(var i=arr.length-1;i>=0;i--){
    newArr[newArr.length]=arr[i]
}
console.log(newArr);

六、数组最大值

求取数组中的最大值

实现步骤:

声明一个保存最大元素的变量 max;

默认最大值也可以取数组中的第一个元素。

遍历这个数组,并把里面的每个数组元素和 max相比较。

如果这个数组元素大于 max的值,那么就将这个数组元素存到 max里面,否则继续进行下一轮比较;

最后输出最大值 max;

(如何去理解呢,可以理解为擂台赛,一个人在擂台守擂(守擂的人就相当是最大值),其他人与他较量,如果赢了,就代替原来的人守擂,就是最厉害的(最大值))

var arr=[2,5,9,34,1,89,50];
var max=arr[0];
for(var i=1;i<arr.length;i++){
    if(arr[i] > max){
        max=arr[i];
    }
}console.log(max);

 

七、数组最小值

求取数组中的最小值,和求取数组中的最大值思路一致。只需要换个符号就可以了。

复制代码
var arr=[2,5,9,34,1,89,50];
var min=arr[0];
for(var i=1;i<arr.length;i++){
    if(arr[i]<min){
        min=arr[i];
    }
}console.log(min);
复制代码

 或者是使用三元运算符,返回结果也是一样的。

var arr=[2,5,9,34,1,89,50];
var min=arr[0];
for(var i=1;i<arr.length;i++){
    min = arr[i] < min?arr[i]:min;
}console.log(min);
原文地址:https://www.cnblogs.com/nyw1983/p/11956228.html