数组的增删改查原理(原生JS)

数组的增删改查(原生JS)

var Arr = [1, 2, 3, 4, 5, 6];

//查  直接遍历数组,这里分别遍历一维数组和二位数组:

    // 一维数组
     for (var i = 0; i < Arr.length; i++) {
      console.log(Arr[i]);
    } 

    // 二维数组
    var per = [
      [1, '孙红雷', '何辅堂', '为人正直不阿,欺强怜弱,善于机变。'],
      [2, '巍子', '魏正先', '鹰视狼顾,心狠手黑。'],
      [3, '陈数', '程立雪', '气质如兰,观之可亲,思想卓荦,才华压众。'],
      [4, '郭珍霓', '刘二泉', '行动不便,但若论手段心机,十个健全人也不是她的对手。'],
      [5, '陈祉希', '朱彩灵', '刀马旦出身,水般柔美,火样性格。含威不露,顾盼神飞。']
    ];
    document.write('<table border = "1">');
    for (var i = 0; i < per.length; i++) {
      document.write('<tr>')
      for (var j = 0; j < per[i].length; j++) {
        document.write('<td>' + per[i][j] + '</td>');
      }
      document.write('</tr>')
    }
    document.write('</table>');

// 改  直接对索引号进行赋值。但写出的索引号大于数组本身的长度那中间加的都是空属性。比如:arr[8] = '8',则数组arr输出的是:[1, 2, 3, 4, 5, 6, 空属性 × 2, '8']。
Arr[5] = '5';
console.log(Arr); 

// 删

    // 从尾删
     Arr.length--;
    console.log(Arr); 

    // 从头删   原理:把索引号后面的值赋给前面的一位给覆盖掉,然后从左到右一步一步的的覆盖,到最后删除掉末尾元素就实现删掉开头的元素。
     for (var i = 1; i < Arr.length; i++) {
      Arr[i - 1] = Arr[i];
      console.log(Arr);
    }
    Arr.length--;
    console.log(Arr); 

    // 从中间删
     for (var i = 4; i < Arr.length; i++) {
      Arr[i - 1] = Arr[i];
    }
    Arr.length--;
    console.log(Arr); 

    // 总结:从后面删直接在最后的 arr.length-- ;不管是从前面或者中间删,把 i 改成想删值的第几位,比如想在开头删就 i = 1,想在第四位的地方删,就 i = 4。这里的第几位不是索引!!

 // 增  

    // 从后面加
    Arr[Arr.length] = 78;
    console.log(Arr); 

    // 从前面加
     for (var i = Arr.length; i > 0; i--) {
      Arr[i] = Arr[i - 1];
    }
    Arr[0] = 'head';
    console.log(Arr); 

    // 从中间加
     for (var i = Arr.length; i > 2; i--) {
      Arr[i] = Arr[i - 1];
    }
    Arr[2] = 'second';
    console.log(Arr); 

    // 总结:从后面加直接在最后的 arr.length = xxx ;不管是从前面或者中间加,把条件改成想加的值,比如想在开头加就 i > 0,想在索引为2的地方加就 i > 2。

总结

​ 数组相当于就是连成的一条线,任何增删改查都是从头到尾或从尾到头进行的,所以进行操作时是把每位数的索引进行往前、往后移动。并不能像链表一样对数据的地址进行操作,花费的时间较长(对尾部(arr.length-1)的数据操作除外)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值