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的原型上操作的,增删改会影响到原本的数据,有任何问题欢迎共同交流~
JavaScript之对数组中元素进行增删改的更多相关文章
- Javascript循环删除数组中元素的几种方法示例
发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利运 ...
- python中列表中元素的增删改查
增: append : 默认添加到列表的最后一个位置 insert : 可以通过下标添加到列表的任意位置 extend: a.extend[b] --将b列表的元素全加入到列表b中 删; remove ...
- javascript 原生js对html元素的 增删改查 操作
'use strict'; class View{ constructor(){ } //创建html元素 addEl(fel, elemName, id, cls){ //创建一个元素 let el ...
- JS实现循环删除数组中元素的方法介绍
这篇文章主要给大家介绍了关于Javascript循环删除数组中元素的几种方法,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 本文主要跟大家分享了 ...
- JavaScript Array reverse 方法:颠倒数组中元素的顺序
在JavaScript中,Array对象的reverse()方法将颠倒(反转)数组中元素的顺序.arr.reverse()在原数组上实现这一功能,即,reverse()会改变原数组. 例1:将数组元素 ...
- JS中对数组元素进行增删改移
在js中对数组元素进行增删改移,简单总结了一下方法: 方法 说明 实例 push( ); 在原来数组中的元素最后面添加元素 arr.push("再见58"); unshift( ) ...
- javascript中获取字符串或数组中元素的索引
有些时候,我们需要知道一个字符串中字符的位置,或者一个数组中元素的位置,这是就需要对该变量进行迭代操作. 对于数组,有两个方法indexOf和findIndex() , 需要注意的是,findInde ...
- Javascript数组系列五之增删改和强大的 splice()
今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章. 生命不息,更新不止! 今天我们就不那么多废话了,直接干货开始. 我 ...
- js删除数组中元素的方法
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
随机推荐
- (转载)OC学习篇之---类的定义
之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...
- 【恒天云技术分享系列10】OpenStack块存储技术
原文:http://www.hengtianyun.com/download-show-id-101.html 块存储,简单来说就是提供了块设备存储的接口.用户需要把块存储卷附加到虚拟机(或者裸机)上 ...
- SRM 509 DIV1 500pt(DP)
题目简述 给定一个字符串,可以对其进行修改,删除,增加操作,相应的操作有对应的花费,要求你用最小的花费把字符串变为回文串 题目做法 先搞一遍floyed把各种操作的最小花费求出来,然后就是类似编辑距离 ...
- Native libraries .so.XY failing to link at runtime
What you need to do is edit the configure file. And find out this: SLIBNAME='$(SLIBPREF)$(FULLNAME)$ ...
- Hadoop概念学习系列之Hadoop HA进一步深入(二十八)
对于Hadoop里的HA,有hdfs HA和resourcemanger HA之分. 1.hdfs HA 为什么引入federation? 因为,这样能达到允许在一个集群里,有多对namenode.通 ...
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
这个问题是老生常谈的问题啦,虽然说到处百度都有的答案,还是希望自己能总结一下. 如今有很多答案,都是从硬件开始讲起,比如键盘的响应或者触屏的响应,然后CPU处理到OS的内核等等.这里不作为重点来讲,要 ...
- Struts2的国际化
1.概述 把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化. 与国际化对应的是本地化, 指让一个具备国际化支持的应用程序支持某个特定的地区 Struts2国际化是建 ...
- Gym 100507C Zhenya moves from parents (线段树)
Zhenya moves from parents 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/C Description Z ...
- HDU 5754 Life Winner Bo (博弈)
Life Winner Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5754 Description Bo is a "Life W ...
- uva10474 简单排序查找 一次AC
题目很简单,加上读题20分钟一次AC.还是用到了快排qsort. #include<iostream> #include<cstdlib> using namespace st ...