数组(最大最小值、排序、去重、api遍历)

数组中内置api

用途:处理复杂的数据结构。对象数组 字符串组合
难点:数据打乱重组
1: 对数据的基本操作;数组基本操作(增删改查) 对象基本操作 字符串基本操作(拼接 替换 删除 切割 截取…)

数组基本操作

1:查 --> 获取数组中的数据 arr[index] for…获取所有

  • 获取第一个 arr[0]

  • 获取最后一个 arr[arr.length-1]

  • 获取倒数第二个 arr[arr.length-2]
    2:增:

  • 从尾增加 改变原来数组 arr.push(增加数据可多个)

  • 从头增加,索引值为0 改变原来数组 arr.unshift(增加数据可多个)

  • 从尾部增。arr[arr.length] = 数据

  • 合并数组 arr.concat() 返回新数组;原来数组arr 发生改变

3:删

  • pop() 从尾部删除
  • shift() 从头部删除
  • delet arr[index] 删除值 不删除索引 长度不变
  • splice(index,len) 从第几个索引值开始;删除几个。 返回删除内容

4: 改 arr.splice(index,len,data,data,…)
- splice() 删除 替换 插入
- index 表示 从第几个索引值开始
- len 表示 删除几个数据
- 第三参数以后 表示往index索引位置插入内容

5:字符串与数组转化方法

  • 字符串变数组 str.split()
  • 数组变字符串
    • arr + ‘’
    • arr.toString()
    • arr.join() 将数组中数进行链接 参数为链接符,默认是逗号
      6: 其他方法
  • slice() 截取数组片段 返回截取内容;原来数组不变
  • sort() 排序
  • reverse() 应用 升序与降序的颠倒
展开运算符符 …
  • 展开数组 […arr]
  • …arr = 数组中每一个数据
  • 展开对象 {…obj}
  • …obj = key:value,key:value…
案例
求最大值、最小值:

思路:获取头和尾,将数组排序;
升序 头最小 尾最大; 降序 头最大 尾最小

//用sort() 方法

 var arr = [3, 1, 44, 22, 33, 66, 2];
 arr.sort(function(a, b) {
 return a - b;
 });
 arr[0]; // 最小
 arr[arr.length - 1]; // 最大
// 用for求最大值 最小值
//1: 初始化变量max 值 arr1[0]
// 2: 让max与数组中每一值进行比较, 如果发现有比max 大的值;对max 重新赋值


var arr1 = [3, 1, 44, 22, 33, 66, 2];
var max = arr1[0];
for(var i = 0;len = arr1.length,i<len;i++){
arr1[i] //  获取数组中每一个值
if(max<arr1[i]){
    max = arr1[i]
 }
}
console.log(max);

// 最小值
// 1:初始化变量 min 表示最小值
// 2:获取数组每一个值;让min 与 数组中每一个值进行比较。如果min大于该值,那么对min重新赋值
// 3:min 的值一定是小值
var min = arr1[0];
 for(var i = 0;len = arr1.length,i<len;i++){
	arr1[i] //  获取数组中每一个值
   if(min>arr1[i]){
             min = arr1[i]
   }
}
降序
 //  降序
         var tmp;
         for (var i = 0; i < arr1.length; i++) {
          //   arr1[i]// arr[i] 数组中前面数据
           console.log(arr1[i]);
          for (var j = i + 1; j < arr1.length; j++) {

           //   arr[j] 数组中后面的数
            if (arr1[i] < arr1[j]) {
              tmp = arr1[i]; // 保存小值
              arr1[i] = arr1[j]; // 前面值变大
               arr1[j] = tmp; // 后面值变小
             }
           }
        }
       console.log(arr1);

数组排序:
var arr1 = [3, 1, 44, 22, 33, 66, 2];
      console.log(arr1);
       数组排序  : for  换值  if 语句
       升序思路
       1:获取数组中每一个值。arr[i]
       2:让arr[i]分别与i后面的值进行比较
       3:声明一个变量;保存大值,让后让小值在前大值在后
         var tmp ;
        for(var i = 0;i<arr1.length;i++){
           //   arr1[i]// arr[i] 数组中前面数据
             console.log((arr1[i]));
            for(var j = i+1;j<arr1.length;j++){
               /*
               执行次数 6+5+4+3+2+1 +0
               */
               //   arr[j] 数组中后面的数
                if(arr1[i]>arr1[j]){
                    tmp = arr1[i]; // 保存大值
                    arr1[i] = arr1[j] // 前面值变小
                     arr1[j] = tmp // 后面值变大
               }
             }
        }
         console.log(arr1)
数组去重
var arr = [1,1,2,2,2,2,3,3,4,54,3,1,2,3,5,5,5,5,"aaa","aaaa"];

方式一:
    var res =[]; // 接受不重复的数据
     // 1: 获取到arr中每一个值
    for(var i =0;i<arr.length;i++){
         var flag = true;// 表示不重复--true  false 重复
         // 与第一次获取到值;之前的数据进行比价,看是否有重复的
         for(var j = 0;j<i;j++){
            // 如果有重复的,跳出本次循环
             if(arr[i]===arr[j]){
                 // 重复
                flag = false;
                break;// 循环次数少;性能更高
             }
         }
         if(flag){ // flag 不会将重复数据;添加到 res中
             res.push(arr[i])
        }
      }
       console.log(res)


   方式二:在原有的数据中进行该改变
       for (var i = 0; i < arr.length; i++) {
         arr[i];
        for (var j = i + 1; j < arr.length; j++) {
           if (arr[i] === arr[j]) {
             arr.splice(j, 1);
            j--;
           }
        }
      }
      console.log(arr);

    // 方式三:

     性能最好
       var arr = [1,1, 2, 2, 2, 3, 3, 3, 4, 45, 55, 6, 6,1];
       var res = []; // 声明的新数组
       //  从后往前获取每一个数;让该数;与之前的所有数进行比较
       for(var i = arr.length-1;i>=0;i--){
         // 从后往前获取每一个数
         var flag = true;
         for(var j = i-1;j>=0;j--){
             if(arr[i] ===arr[j]){
                 flag = false;
                 // 删除前面重复的数
                 arr.splice(j,1)
                 break
             }
         }
         if(flag){
             res.unshift(arr[i])
         }
      }
      console.log(res)

   方法四:
    var arr = [1, 1, 2, 3, 3, 4, 4, 5];
    var res = [];
    // indexOf()返回数据的在数组中的索引值;如果为-1表示该数组中没有这个数据
    // ---------> 参数为被【查询的数据】
    for (var i = 0; i < arr.length; i++) {
      // 判断res 中是否有 arr 中数据
      // console.log(res.indexOf(arr[i]),arr[i])
      if (res.indexOf(arr[i]) === -1) {
        res.push(arr[i]);
      }
    }
      // arr.indexof()  检索数组中书否有这个数据 -1无  有返回数据对应索引值
数组api遍历
var arr = [1, 2, 43, 5, 5, 6, 7, 78, 8, 8, 3];
	// forEach() 遍历数组  实参 为函数
	arr.forEach(function(data, i) {
	// 参一data: 数组中数据
	// 参二i : 索引值
		console.log(i, ":", data);
 });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值