zoukankan      html  css  js  c++  java
  • JavaScript之对数组中元素进行增删改

    JavaScript中数据类型无非是:简单类型+复杂类型,什么是简单什么又是复杂。从电脑物理存储上讲,简单就是所见即所得,你看见什么,电脑里面存的就只是什么,并不会因为一些关系(比如引用)而多出一部分你不知道的(比如方法、属性等);反之复杂,就是你看到的只是对方的冰山一角,而且这一角还戴了面纱(比如:你看见的只是一个指针,并不是对方本质所在)。

    综上,简单类型的数据就是一个平常的不带方法、属性的数据(举个例子 var a=3; 这个a就是一个number类型<注意:js是弱类型语言,从值看类型>的数据,而number类型的数据包含在简单数据类型这个大类里)。复杂类型的数据就是给你一个指针(或者说你自己定义后得到一个指针),然后通过指针操作从而操作本质的一些方法或属性(这里不举例子,毕竟今天主题不是这个,有需要可留言共交流~)

     

    简单类型:undefined、null、string、number、boolean

    复杂类型:object

    其中复杂类型object又可以延伸出许多子女:Array、Date、Function、RegExp、Math……

     

    这里讲复杂类型中的一种:数组类型的数据的增删改。

    经常遇到这种题目,给你一个string类型或者array类型的数据,让你对其中的某些元素进行操作(比如修改、删除或替换),做法其实很有一套固定流程:

    1)找到它

    2)操作它

    思路非常清晰,并且在计算机中要找到某个数据,通常会用到数据结构里的一些查找算法(毕竟现在大数据来了,即使不是大数据,在现在的快餐社会,用户总是希望最快的速度达到目的),在空间和时间的权衡下找到最佳的查找算法并用上去就能完成第一步。

    今天不讲数据结构,不求快速,只要找到它,很自然想到for循环,然后一个一个数据比对,找到就return。而操作它这一步只要学过js,就会知道数组中已经有许多方法属性帮你实现这个,不需要自己写最底层代码(非常佩服打底层代码大牛们,他们造轮子封装的方法、属性简直方便了全人类!)

     

     

    上例子:

    var colors=["red","blue","white"];  //对象字面量的方法定义数组colors,比较简单只管,比较受欢迎

    //var colors=new Array();    colors.push("red","blue","white"); //构造类型的方法创建数组,与上面对象字面量的方法能达到同样的效果,择一即可

     

    //找到下标

    Array.prototype.indexOf=function(val){  

      for(var i=0;i<this.length;i++){

        if(this[i]==val)  return i;

      }

      return -1;

    };

    //建立replace方法,加上增删改功能

    Array.prototype.replace=function(val,len,item){

      var index=this.indexOf(val);

      this.splice(index,len,item);

    };

    //实际操作

    colors.replace("blue",1);  //删除了blue

    colors.replace("red",1,"green");  //将red替换成green

    colors.replace("white",0,"gray");  //在white后增加了gray

     

    注意:以上replace方法和indexOf方法是在Array的原型上操作的,增删改会影响到原本的数据,有任何问题欢迎共同交流~

    原创博客,欢迎讨论,转载请注明出处、链接
  • 相关阅读:
    每天一个linux命令
    Python 面向对象-下篇
    Python 面向对象-上篇
    何时会发生隐式类型转换
    C++类型检查
    无符号保留原则
    bool类型为什么可以当做int
    在类的外部定义成员函数注意形式
    局部类
    命名规范
  • 原文地址:https://www.cnblogs.com/hihao/p/6011011.html
Copyright © 2011-2022 走看看