删除数组指定的某个元素

via首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为:

  1. Array.prototype.indexOf = function(val) {
  2. for (var i = 0; i < this.length; i++) {
  3. if (this[i] == val) return i;
  4. }
  5. return -1;
  6. };

然后使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素:
代码为:

  1. Array.prototype.remove = function(val) {
  2. var index = this.indexOf(val);
  3. if (index > -1) {
  4. this.splice(index, 1);
  5. }
  6. };

这样就构造了这样一个函数,比如我有有一个数组:

  1. var emp = ['abs','dsf','sdf','fd']

假如我们要删除其中的 'fd' ,就可以使用:

  1. 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,长度为1的一个值(len设置1,如果为0,则数组不变)
  2. var arr = ['a','b','c','d'];
  3. arr.splice(1,1);
  4. console.log(arr);
  5. //['a','c','d'];
  6.  
  7. //删除起始下标为1,长度为2的一个值(len设置2)
  8. var arr2 = ['a','b','c','d']
  9. arr2.splice(1,2);
  10. console.log(arr2);
  11. //['a','d']

替换:

  1. //替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
  2. var arr = ['a','b','c','d'];
  3. arr.splice(1,1,'ttt');
  4. console.log(arr);
  5. //['a','ttt','c','d']
  6.  
  7. var arr2 = ['a','b','c','d'];
  8. arr2.splice(1,2,'ttt');
  9. console.log(arr2);
  10. //['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1

添加 ----  len设置为0,item为添加的值:

  1. var arr = ['a','b','c','d'];
  2. arr.splice(1,0,'ttt');
  3. console.log(arr);
  4. //['a','ttt','b','c','d'] 表示在下标为1处添加一项'ttt'

via2:delete    

delete删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变

  1. var arr = ['a','b','c','d'];
  2. delete arr[1];
  3. arr;
  4. //["a", undefined × 1, "c", "d"] 中间出现两个逗号,数组长度不变,有一项为undefined

javascript数组去重

原文链接:http://caibaojian.com/js-delrepeat.html

via数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。原文来自:http://caibaojian.com/js-delrepeat.html

思路:

  1. 遍历数组,一一比较,比较到相同的就删除后面的
  2. 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
  3. 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
  4. 遍历数组,取一个元素,作为对象的属性,判断属性是否存在

这里提供五个代码示范:
1. 删除后面重复的:

  1. function ov1(arr){
  2. //var a1=((new Date).getTime())
  3. for(var i=0;i<arr.length;i++)
  4. for(var j=i+1;j<arr.length;j++)
  5. if(arr[i]===arr[j]){arr.splice(j,1);j--;}
  6. //console.info((new Date).getTime()-a1)
  7. return arr.sort(function(a,b){return a-b});
  8. }

2. 这个是常规的方法,比较好理解,如果相同则跳出循环:

  1. function ov2(a) {
  2. //var a1=((new Date).getTime())
  3. var b = [], n = a.length, i, j;
  4. for (i = 0; i < n; i++) {
  5. for (j = i + 1; j < n; j++)
  6. if (a[i] === a[j]){j=false;break;}
  7. if(j)b.push(a[i]);
  8. }
  9. //console.info((new Date).getTime()-a1)
  10. return b.sort(function(a,b){return a-b});
  11. }

3. 这个我花了好长时间明白的,这里j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环:

  1. function ov3(a) {
  2. //var a1=((new Date).getTime())
  3. var b = [], n = a.length, i, j;
  4. for (i = 0; i < n; i++) {
  5. for (j = i + 1; j < n; j++)
  6. if (a[i] === a[j])j=++i
  7. b.push(a[i]);}
  8. //console.info((new Date).getTime()-a1)
  9. return b.sort(function(a,b){return a-b});
  10. }

4. 保证新数组中的都是唯一的:

  1. function ov4(ar){
  2. //var a1=((new Date).getTime())
  3. var m=[],f;
  4. for(var i=0;i<ar.length;i++){
  5. f=true;
  6. for(var j=0;j<m.length;j++)
  7. if(ar[i]===m[j]){f=false;break;};
  8. if(f)m.push(ar[i])}
  9. //console.info((new Date).getTime()-a1)
  10. return m.sort(function(a,b){return a-b});
  11. }

5. 用对象属性:

  1. function ov5(ar){
  2. // var a1=(new Date).getTime()
  3. var m,n=[],o= {};
  4. for (var i=0;(m= ar[i])!==undefined;i++)
  5. if (!o[m]){n.push(m);o[m]=true;}
  6. // console.info((new Date).getTime()-a1)
  7. return n.sort(function(a,b){return a-b});;
  8. }

Javascript中数组的基本操作的更多相关文章

  1. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  2. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  3. Javascript中数组

    Javascript中数组 1.什么是数组 所谓的数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存) 2.创建数组的含义 创建数组的目的:就是为了保存更多的数据 3.数组的定义 ...

  4. javascript中数组常用方法总结

    原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...

  5. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  6. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  7. javascript中数组化的一般见解

    javascript中数组化的一般见解,数组化浏览器中存在许多类数组对象,往往对类数组操作比较麻烦,没有数组那些非常方便的方法,在这种情况下,就有了数组化方法. 数组化的一般方法 1.第一种也是我们最 ...

  8. 总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...

  9. JavaScript中数组常用方法的总结

    JavaScript中数组Array常用的方法总结 标签(空格分隔): JavaScript ECMAScript数组给我们提供了许多常用的方法,便于我们对数组进行操作,下面,就来总结一下这些方法. ...

随机推荐

  1. Java学习笔记之方法重载

    被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...

  2. [Java] Spring + SpringMVC + Maven + JUnit 搭建

    示例项目下载: https://github.com/yangyxd/SpringDemo 利用前面 SpringMVC 项目的配置方式,完成初步的项目创建.下面只讲一些不同之处. 传送门: [Jav ...

  3. sublime 中 pyv8 binary 报错怎么处理?

    ,sublime text 在安装插件的时候,尤其是Emmet的时候,经常会报一个错误--please wait a bit whilePyV8 binary is being downloaded, ...

  4. easyui如何动态改变列的编辑属性

    动态改变列的编辑属性 var tt=$('#dg').datagrid('getColumnOption', 'yearContent'); //通过列名获得此列 tt.editor={type:'t ...

  5. RESTful 接口调试分享利器 restc

    这个工具来自于https://elemefe.github.io/restc/  这里对Abp进行了一次封装 1.在项目中添加nuget包 Abp.Web.Api.Restc 2.在项目Abp模块的D ...

  6. 解决qq互联回调地址错误redirect uri is illegal(100010)的方法,不同于网上大部分方法

    我是在用ecshop自己搭建的一个网店系统安装了第三方登录的插件,包括qq登录插件.网上大部分情况都是discuz论坛的这个回调地址出错及解决办法.所以在我出错的时候参考他们的办法并不管用.但是在后面 ...

  7. highcharts饼状图使用案例

    在公司由于需要对订单数据进行分析,故使用到了highcharts工具 <block name="Js"> <script type="text/java ...

  8. git操作

    svn终结,git时代来临 git是最好的分布式版本控制系统 廖雪峰的git讲的蛮不错,http://www.liaoxuefeng.com/wiki/0013739516305929606dd183 ...

  9. 7九章算法强化班全解--------Hadoop跃爷Spark

    ------------------------------------------------------------第七周:Follow up question 1,寻找峰值 寻找峰值 描述 笔记 ...

  10. 读《Android编程权威指南》

    因为去年双十二购买了一折的<Android 编程权威指南(第一版)>,在第二版出来后图灵社区给我推送了第二版的优惠码,激动之余就立马下单购买电子书,不得不说Big Nerd Ranch G ...