Javascript中数组的基本操作
删除数组指定的某个元素
via首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为:
- Array.prototype.indexOf = function(val) {
- for (var i = 0; i < this.length; i++) {
- if (this[i] == val) return i;
- }
- return -1;
- };
然后使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素:
代码为:
- Array.prototype.remove = function(val) {
- var index = this.indexOf(val);
- if (index > -1) {
- this.splice(index, 1);
- }
- };
这样就构造了这样一个函数,比如我有有一个数组:
- var emp = ['abs','dsf','sdf','fd']
假如我们要删除其中的 'fd' ,就可以使用:
- emp.remove('fd');
原文链接:http://caibaojian.com/js-splice-element.html
删除的数组的某一项
viasplice(index,len,[item]) 注释:该方法会改变原始数组。原文来自:http://caibaojian.com/js-splice-element.html
splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值
index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空
如:arr = ['a','b','c','d']
删除:
- //删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)
- var arr = ['a','b','c','d'];
- arr.splice(1,1);
- console.log(arr);
- //['a','c','d'];
- //删除起始下标为1,长度为2的一个值(len设置2)
- var arr2 = ['a','b','c','d']
- arr2.splice(1,2);
- console.log(arr2);
- //['a','d']
替换:
- //替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
- var arr = ['a','b','c','d'];
- arr.splice(1,1,'ttt');
- console.log(arr);
- //['a','ttt','c','d']
- var arr2 = ['a','b','c','d'];
- arr2.splice(1,2,'ttt');
- console.log(arr2);
- //['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1
添加 ---- len设置为0,item为添加的值:
- var arr = ['a','b','c','d'];
- arr.splice(1,0,'ttt');
- console.log(arr);
- //['a','ttt','b','c','d'] 表示在下标为1处添加一项'ttt'
via2:delete
delete删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变
- var arr = ['a','b','c','d'];
- delete arr[1];
- arr;
- //["a", undefined × 1, "c", "d"] 中间出现两个逗号,数组长度不变,有一项为undefined
javascript数组去重:
原文链接:http://caibaojian.com/js-delrepeat.html
via数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。原文来自:http://caibaojian.com/js-delrepeat.html
思路:
- 遍历数组,一一比较,比较到相同的就删除后面的
- 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
- 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
- 遍历数组,取一个元素,作为对象的属性,判断属性是否存在
这里提供五个代码示范:
1. 删除后面重复的:
- function ov1(arr){
- //var a1=((new Date).getTime())
- for(var i=0;i<arr.length;i++)
- for(var j=i+1;j<arr.length;j++)
- if(arr[i]===arr[j]){arr.splice(j,1);j--;}
- //console.info((new Date).getTime()-a1)
- return arr.sort(function(a,b){return a-b});
- }
2. 这个是常规的方法,比较好理解,如果相同则跳出循环:
- function ov2(a) {
- //var a1=((new Date).getTime())
- var b = [], n = a.length, i, j;
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++)
- if (a[i] === a[j]){j=false;break;}
- if(j)b.push(a[i]);
- }
- //console.info((new Date).getTime()-a1)
- return b.sort(function(a,b){return a-b});
- }
3. 这个我花了好长时间明白的,这里j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环:
- function ov3(a) {
- //var a1=((new Date).getTime())
- var b = [], n = a.length, i, j;
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++)
- if (a[i] === a[j])j=++i
- b.push(a[i]);}
- //console.info((new Date).getTime()-a1)
- return b.sort(function(a,b){return a-b});
- }
4. 保证新数组中的都是唯一的:
- function ov4(ar){
- //var a1=((new Date).getTime())
- var m=[],f;
- for(var i=0;i<ar.length;i++){
- f=true;
- for(var j=0;j<m.length;j++)
- if(ar[i]===m[j]){f=false;break;};
- if(f)m.push(ar[i])}
- //console.info((new Date).getTime()-a1)
- return m.sort(function(a,b){return a-b});
- }
5. 用对象属性:
- function ov5(ar){
- // var a1=(new Date).getTime()
- var m,n=[],o= {};
- for (var i=0;(m= ar[i])!==undefined;i++)
- if (!o[m]){n.push(m);o[m]=true;}
- // console.info((new Date).getTime()-a1)
- return n.sort(function(a,b){return a-b});;
- }
Javascript中数组的基本操作的更多相关文章
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- Javascript中数组
Javascript中数组 1.什么是数组 所谓的数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存) 2.创建数组的含义 创建数组的目的:就是为了保存更多的数据 3.数组的定义 ...
- javascript中数组常用方法总结
原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
- javascript中数组的常用算法深入分析
Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...
- javascript中数组化的一般见解
javascript中数组化的一般见解,数组化浏览器中存在许多类数组对象,往往对类数组操作比较麻烦,没有数组那些非常方便的方法,在这种情况下,就有了数组化方法. 数组化的一般方法 1.第一种也是我们最 ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- JavaScript中数组常用方法的总结
JavaScript中数组Array常用的方法总结 标签(空格分隔): JavaScript ECMAScript数组给我们提供了许多常用的方法,便于我们对数组进行操作,下面,就来总结一下这些方法. ...
随机推荐
- Java学习笔记之方法重载
被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...
- [Java] Spring + SpringMVC + Maven + JUnit 搭建
示例项目下载: https://github.com/yangyxd/SpringDemo 利用前面 SpringMVC 项目的配置方式,完成初步的项目创建.下面只讲一些不同之处. 传送门: [Jav ...
- sublime 中 pyv8 binary 报错怎么处理?
,sublime text 在安装插件的时候,尤其是Emmet的时候,经常会报一个错误--please wait a bit whilePyV8 binary is being downloaded, ...
- easyui如何动态改变列的编辑属性
动态改变列的编辑属性 var tt=$('#dg').datagrid('getColumnOption', 'yearContent'); //通过列名获得此列 tt.editor={type:'t ...
- RESTful 接口调试分享利器 restc
这个工具来自于https://elemefe.github.io/restc/ 这里对Abp进行了一次封装 1.在项目中添加nuget包 Abp.Web.Api.Restc 2.在项目Abp模块的D ...
- 解决qq互联回调地址错误redirect uri is illegal(100010)的方法,不同于网上大部分方法
我是在用ecshop自己搭建的一个网店系统安装了第三方登录的插件,包括qq登录插件.网上大部分情况都是discuz论坛的这个回调地址出错及解决办法.所以在我出错的时候参考他们的办法并不管用.但是在后面 ...
- highcharts饼状图使用案例
在公司由于需要对订单数据进行分析,故使用到了highcharts工具 <block name="Js"> <script type="text/java ...
- git操作
svn终结,git时代来临 git是最好的分布式版本控制系统 廖雪峰的git讲的蛮不错,http://www.liaoxuefeng.com/wiki/0013739516305929606dd183 ...
- 7九章算法强化班全解--------Hadoop跃爷Spark
------------------------------------------------------------第七周:Follow up question 1,寻找峰值 寻找峰值 描述 笔记 ...
- 读《Android编程权威指南》
因为去年双十二购买了一折的<Android 编程权威指南(第一版)>,在第二版出来后图灵社区给我推送了第二版的优惠码,激动之余就立马下单购买电子书,不得不说Big Nerd Ranch G ...