一、删除指定的数组元素
要求:将数组 [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);