在js中对数组的操作是经常遇到的,我呢在这就列一下经常用到的方法

删除数组中的元素:

1.delete方法:delete删除的只是数组元素的值,所占的空间是并没有删除的

代码:

var arr=[12,23,44,5,6,23,43,34];
console.log(arr.length);
console.log(arr);
delete arr[1];
console.log(arr);
console.log(arr[1]);
console.log(arr.length);

运行结果在这里:

这个就很直观的看得出来,删除后,数组的长度前后是并没有变化的。被删除的元素位置还是留在那,读取到该下标元素的时候,元素的值为undefined。

2.splice方法:该方法删除数组指定的元素,并且可以给数组添加新的元素,即实现删除/替换数组的某项元素。splice(下标,删除的长度,替换的新元素)

arr.splice(index,length,items,items,...);

注意:如果不添加item的时候,就是数组的删除,会改变原数组的长度

代码如下:

var arr=[12,23,44,5,6,23,43,34];
console.log(arr.length);
arr.splice(1,2);//从下标为1的元素开始删除,删除的长度为2即23,44两个数
console.log(arr);
console.log(arr.length);

运行后的结果:

从运行结果中可以看得出来,原数组中的23,44两个元素被删除了,数组长度由原来的8变成了6

shift方法:删除第一个数组元素,不带参数,数组的长度会减1,并且返回的是数组的第一个元素;

  arr.shift();

  注意:如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject

pop方法:删除数组的最后一个元素,数组的长度会减1,并且返回的是数组的最后一个元素(通过alert()可以查看出返回的是哪个值)

arr.pop();

var arr=['a','b','c','d','e','f'];
alert(arr.shift());
arr.pop();
alert(arr.pop());
console.log(arr);

增加数组:

/*****检测方法都是和上面的类似的,下面这些我就罗列测试结果截图了*****/

unshift(): 方法:在数组的第一个元素前面增加一个元素,数组的长度会加1,该方法会改变原来数组的长度.

arr.unshift(newElement)

push():在数组的结尾追加元素,可以追加多个元素,该方法会改变原来数组的长度 

  arr.push(newElement,...);

注意:追加的元素最好是简单类型的字面量,不要是数组,如果是数组的,追加过来的元素会在该位置显示为一个数组,元素就会变成了二维数组,甚至多维数组

concat():合并两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本

数组排序:

sort():该方法是对数组进行升序排序,规则是按ascii表的规则来的

  arr.sort();

reverse():对数组进行翻转操作

  arr.reverse();

  js模拟原理实现的代码:

var arr = ["诸葛亮","安琪拉","狄仁杰","后羿","荆轲","娜可露露","鲁班"];
//思路:实现方法:1.操作原数组,让原数组第一位和最后一个位调换位置,以此类推。
for(var i=0;i<arr.length/2;i++){
//让前后数组中的元素交换位置。
var temp = arr[i];
//前面项和对应的后面项交换位置。(arr.length-1-i = 倒数第i+1项)
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
console.log(arr);

检测是否为数组:

arr.isArray(obj):该方法适用于确定传递的值是否为Array,是Array返回的则是true,否的话返回的是false

Array.isArray([1, 2, 3]);  // true
Array.isArray({foo: 123}); // false
Array.isArray("foobar"); // false
Array.isArray(undefined); // false

intanceof 同样也是检测使用的

  语法:a instanceof Object

  返回的值是true or false;

其他方法:

slice():从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始(从第一个元素开始)

  arr.slice(star,end);

注意:如果slice里面没有定义结束的位置的话,那么截取的元素就从被截取元素的开始位置一直截取到结束位置

arr.join():把数组转换成为字符串,可以自己定义分隔符 arr.join("自定义分隔符如&"),默认是逗号隔开,如果要没有分隔符的话,就arr.join("");

arr.toString():同样是把数组转成字符串,但是返回的字符串每项都是用逗号隔开的

js对数组的常用操作的更多相关文章

  1. js对数组对象的操作以及方法的使用

    js对数组对象的操作以及方法的使用 如何声明创建一个数组对象: var arr = new Array(); 或者 var arr = []; 如何移除所有数组中数据? arrayJson.dataL ...

  2. Java实例 Part4:数组及其常用操作

    目录 Part4:数组及其常用操作 Example01:将二维数组的行列交换 Example02:使用选择排序法对数组进行排序 Example03:使用冒泡排序法对数组进行排序 Example04:使 ...

  3. pandas_一维数组与常用操作

    # 一维数组与常用操作 import pandas as pd # 设置输出结果列对齐 pd.set_option('display.unicode.ambiguous_as_wide',True) ...

  4. JavaScript之数组的常用操作函数

    js对数组的操作非常频繁,但是每次用到的时候都会被搞混,都需要去查相关API,感觉这样很浪费时间.为了加深印象,所以整理一下对数组的相关操作. 常用的函数 concat() 连接两个或更多的数组,并返 ...

  5. js中数组遍历常用的方法

    常见的数组遍历方法,比如 for in,for  of, forEach,map,filter,every,some,find,reduce等 1,普通for循环,经常用的数组遍历 var arr = ...

  6. 关于JS中数组的分析操作

    JS数组的基础操作代码: <script type="text/javascript">        数组的三种定义    var arr1 = new Array( ...

  7. js数组的常用操作

    数组合并 var arr=[1,"abc","张三","122"]; var b=["今天天气不错","适合学 ...

  8. Js 中对 Json 数组的常用操作

    我们首先定义一个json数组对象如下: var persons = [ {name: "tina", age: 14}, {name: "timo", age: ...

  9. js对象,数组,字符串的操作

    循环绑定=>变量污染 for (var i = 0;i<lis.length;i++){ lis[i].index = i;#给页面元素对象添加一个任意属性(保留索引的属性index) # ...

随机推荐

  1. BAT 批处理脚本 教程 【转】

    BAT 批处理脚本 教程 第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令 ...

  2. CentOS Openvpn搭建以及 linux&&windows客户端的连接

    本文参考:http://www.centoscn.com/CentosServer/test/2014/1120/4153.html 一. Server安装准备     (CentOS release ...

  3. C语言--链表基础模板

    1.建立结构体 struct ST { int num;///学号 int score;///成绩 struct ST*next; };///结构体 2.空链表的创建 struct ST creatN ...

  4. "Hello world!"团队第八次会议

    Scrum会议 今天是我们"Hello world!"团队第八次召开会议,博客内容是: 1.会议时间 2.会议成员 3.会议地点 4.会议内容 5.todo list 6.会议照片 ...

  5. TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用

    一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...

  6. 内部网关协议RIP 路由选择算法(距离向量)

    RIP是一种基于距离向量的路由选择协议 RIP的距离就是指的跳数,没经过一个路由,就是一跳,RIP允许一跳路径最多经过15个路由器,所以16个的话就相当于不可以到达了 RIP协议的特点: 1:仅和相邻 ...

  7. MFC动态创建控件及其消息响应函数

    这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...

  8. iOS开发应用程序更新

    #import "ViewController.h" //1一定要先配置自己项目在商店的APPID,配置完最好在真机上运行才能看到完全效果哦 #define STOREAPPID ...

  9. pfx 证书怎么打开

    其实双击就能够自动运行导入向导的 不行的话使用我的办法: 单击开始--运行--里输入mmc 然后单击文件--选择添加删除管理单元--再选择添加--拉动滚动条找到证书一项,点击添加再点击完成(不用做任何 ...

  10. (转)《linux性能及调优指南》 3.3 内存瓶颈

    翻译:Hank (http://blog.csdn.net/fireroll)版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明.原文名称:<Linux Performance an ...