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的原型上操作的,增删改会影响到原本的数据,有任何问题欢迎共同交流~

JavaScript之对数组中元素进行增删改的更多相关文章

  1. Javascript循环删除数组中元素的几种方法示例

    发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利运 ...

  2. python中列表中元素的增删改查

    增: append : 默认添加到列表的最后一个位置 insert : 可以通过下标添加到列表的任意位置 extend: a.extend[b] --将b列表的元素全加入到列表b中 删; remove ...

  3. javascript 原生js对html元素的 增删改查 操作

    'use strict'; class View{ constructor(){ } //创建html元素 addEl(fel, elemName, id, cls){ //创建一个元素 let el ...

  4. JS实现循环删除数组中元素的方法介绍

    这篇文章主要给大家介绍了关于Javascript循环删除数组中元素的几种方法,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 本文主要跟大家分享了 ...

  5. JavaScript Array reverse 方法:颠倒数组中元素的顺序

    在JavaScript中,Array对象的reverse()方法将颠倒(反转)数组中元素的顺序.arr.reverse()在原数组上实现这一功能,即,reverse()会改变原数组. 例1:将数组元素 ...

  6. JS中对数组元素进行增删改移

    在js中对数组元素进行增删改移,简单总结了一下方法: 方法 说明 实例 push( ); 在原来数组中的元素最后面添加元素 arr.push("再见58"); unshift( ) ...

  7. javascript中获取字符串或数组中元素的索引

    有些时候,我们需要知道一个字符串中字符的位置,或者一个数组中元素的位置,这是就需要对该变量进行迭代操作. 对于数组,有两个方法indexOf和findIndex() , 需要注意的是,findInde ...

  8. Javascript数组系列五之增删改和强大的 splice()

    今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章. 生命不息,更新不止! 今天我们就不那么多废话了,直接干货开始. 我 ...

  9. js删除数组中元素的方法

    一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...

随机推荐

  1. 【转】VC6.0附带小工具软件一览

    )ActiveX Control Test Container称为"ActiveX 控件测试容器",顾名思义,此工具的主要功能就是测试ActiveX 控件,可以通过改变Active ...

  2. WinForm编程时窗体设计器中ComboBox控件大小的设置

    问题描述: 在VS中的窗体设计器中拖放一个ComboBox控件后想调整控件的大小.发现在控件上用鼠标只能拖动宽度(Width)无法拖动(Height). 解决过程: 1.控件无法拖动,就在属性窗口中设 ...

  3. HDU-4737 A Bit Fun 维护

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4737 题意:给一个数列a0, a1 ... , an-1,令 f(i, j) = ai|ai+1|ai ...

  4. es基础操作

    在curl 的 url 中 , 问号后台可以加上pretty=true , 可以将返回来的json进行格式化 . 如果es集群中只有一个node , 那么他的集群健康状态是黄色的 , 只需要再加一个n ...

  5. 记录一次Android交叉编译ffmpeg排查错误

    Android版本手机直播引擎中,引用了libvlc开源库.项目接过来,发现编译脚本中使用了很多用户名下的绝对路径.项目相关人离职,导致这个脚本实际上已经废掉.而且不知道相关路径下有没有其他文件和第三 ...

  6. MLlib 中的聚类和分类

    聚类和分类是机器学习中两个常用的算法,聚类将数据分开为不同的集合,分类对新数据进行类别预测,下面将就两类算法进行介绍. 1. 聚类和分类(1)什么是聚类 聚类( Clustering)指将数据对象分组 ...

  7. Java集合之ArrayList和LinkedList的实现原理以及Iterator详解

    ArrayList实现可变数组的原理: 当元素超出数组内容,会产生一个新数组,将原来数组的数据复制到新数组中,再将新的元素添加到新数组中. ArrayList:是按照原数组的50%来延长,构造一个初始 ...

  8. zoj 1610 Count the Colors

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=610  Count the Colors Time Limit:2000MS   ...

  9. jQuery基础学习8——层次选择器next()和prev()方法

    $('.one + div').css("background","#bbffaa"); //和next()方法是等价的,前后关系,和prev()方法是对立的 ...

  10. angular 管理后台

    http://blog.csdn.net/iamnieo/article/details/50474399