javascript数组方法鉴赏一
创建数组
如果你习惯了用 new 来实例化对象的形式,那么在js中一定会疑惑,可选的参数数量代表的意义截然不同。
new Array(size);//传一个参数的时候分两种情况,size是正整数时代表数组的长度;size是其它非数字类型代表的是初始化有一个元素的数组;非正整数的尝试豪无意义
new Array(element1, element2[, ...]);//两个以上的参数代表数组元素列表
实际更常用的是: var arr = [];//使用字面量的形式直接定义
数组长度
js数组的长度属性length不是只读的属性,你可以通过修改一个数组的length值来控制其元素的个数。控制元素的策略是当length设定值比当前实际值小的时候,会舍去多余的元素;当设定值大于当前实际值的时候,会填充多个空值(undefined),这个特性使得在修改数组大小的时候非常方便。
var arr = [1,2,3,4,5];
arr.length = 3;//此时arr:[1,2,3]
arr.length = 6;//此时arr:[1,2,3,,,]
数组拼接 concat
多个数组的拼接方法是 concat ,调用方式为 array1.concat(item1, item2[, ...]),其中item既可以是数组又可以是其它值,item若为数组,则展开其值和array1内容拼接到一起,其它则直接拼接。
单从字面上看会误以为所有的item都会拼接到array1的末尾,但实际上该方法并不修改array1的值,而是将array1作为数组片段和其它提供的item片段拼接后返回一个新的数组。
如果想要达到修改array1的目的,只需一个赋值操作即可。array1 = array1.concat(item1, item2[, ...]);
数组元素的连接 join
join 方法返回按指定分隔符分隔,连接到一起的所有元素,默认分隔符为逗号。调用方式为 arr.join(separator),若元素当中的值为 null、undefined 或者空字符串的值在join后都当作空字符串处理。
移除数组第一个元素 shift
arr.shift() 方法移除第一个元素,返回该元素,数组为空返回 undefined。
移除数组末尾元素 pop
arr.pop() 方法移除数组中最后一个元素,返回该元素,数组为空返回 undefined。
添加新元素到数组开始 unshift
unshift插入指定元素到数组的开始位置,返回该数组。
arr.unshift(item1, item2[, ...]),可以一次按参数序列的顺序插入多个值,若item为数组不会被展开
添加新元素到数组末尾 push
push方法将新元素添加到数组中,返回数组的新长度值。
arr.push(item1, item2[, ...]),可以一次按参数序列的顺序添加多个值,若item为数组不会被展开
反转元素的顺序 reverse
arr.reverse() 方法将数组元素位置进行反转,方法执行后原数组会被修改。
数组片段截取 slice
arr.slice(start, [end]) 方法返回数组的一个截取片段。从数组下标 start 开始到 end 结束,不包括end。
var arr = [0,1,2,3,4,5,6];
arr.slice(2, 6);//[2,3,4,5]
arr.slice(-5, 6);//[2,3,4,5] 可以理解为从倒数第5个至正数第6个
end 省略时代表截取到数组的末尾, start 和 end 都省略时返回一个arr的拷贝。
最终取值 start 小于 end。
arr.slice(6, 3);//[],使用slice截取数组片段之前一定要验证start<end,否则这种返回结果会产生非常隐蔽的bug
数组中移除或插入元素 splice
arr.splice(start, deleteCount, item1, item2[, ...]),从数组中 start 下标开始移除 N 个元素,如果需要可以在移除的元素位置上插入新元素列表,返回值是一个由被移除的元素组成的数组。
- 负值,如果所传递的第一个参数比第二个参数小。
- 零,如果两个参数相等。
- 正值,如果第一个参数比第二个参数大。
sortFunction 提供了一个比较两个任意类型数组元素大小的方法, 返回正数时则参数 x 会排在 y 的后边,返回负数时相反,比对所有元素后完成排序。
//[ { name: 'susan', age: 8 }, { name: 'jim', age: 12 }, { name: 'jack', age: 14 } ]
javascript数组方法鉴赏一的更多相关文章
- JavaScript数组方法--every、some、fill
接上一篇,JavaScript数组方法--concat.push,继续其他的数组方法. every:every() 方法测试数组的所有元素是否都通过了指定函数的测试. 先看其使用方法: functio ...
- 【译】你应该了解的JavaScript数组方法
让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...
- JavaScript数组方法大全(推荐)
原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...
- JavaScript 数组方法处理字符串 prototype
js中数组有许多方法,如join.map,reverse.字符串没有这些方法,可以“借用”数组的方法来处理字符串. <!doctype html> <html lang=" ...
- 2018.2.27 JavaScript数组方法应用
JavaScript数组方法应用 1.找出元素item在给定数组arr中的位置 function indexOf(arr,item){ return arr.indexOf(item); } func ...
- JavaScript数组方法详解
JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...
- JavaScript数组方法速查,32个数组的常用方法和属性
JavaScript数组方法速查手册极简版 http://30ke.cn/doc/js-array-method JavaScript数组方法速查手册极简版中共收了32个数组的常用方法和属性,并根据方 ...
- JavaScript数组方法大集合
JavaScript数组方法集合 本文总结一下js数组处理用到的所有的方法.自己做个笔记. 数组方法 concat() 合并两个或多个数组 concat()能合并两个或者多个数组,不会更改当前数组,而 ...
- 一站式超全JavaScript数组方法大全
一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...
随机推荐
- libevent入门(1)
libevent是什么 libevent 库实际上没有更换 select().poll() 或其他机制的基础.而是使用对于每个平台最高效的高性能解决方案在实现外加上一个包 ...
- flask开发restful api系列(5)-短信验证码
我们现在开发app,注册用户的时候,不再像web一样,发送到个人邮箱了,毕竟个人邮箱在移动端填写验证都很麻烦,一般都采用短信验证码的方式.今天我们就讲讲这方面的内容. 首先,先找一个平台吧.我们公司找 ...
- CommandBehavior.CloseConnection的使用
CommandBehavior.CloseConnection的使用 分析问题 由于流模式读取数据库的特点,在具体应用时很难确定数据库连接何时才能被关闭,因为读取的动作是连续进行的,下面是一个常见的数 ...
- struct tm->time() localtime() gmtime()
struct tm->time() localtime() gmtime() struct tm { int tm_sec; /*代表目前秒数,正常范围为0-59,但允许至61秒 */ int ...
- 官方recovery签名验证的破解教程
下面讲如何破解官方recovery签名验证(这个方法应该是通用的,其他手机可以参考,recovery签名验证破解了,也不用费力编译第三方recovery) 1.从官方ROM里提取recovery.im ...
- angularJs项目实战!03:angularjs与其他类库的协作
引言:angularjs是一个中等重量级的前端开发框架 HTML是一门很好的为静态文本设计的语言,但要构建动态的web应用它就显的乏力了.通常,我们使用以下技术来解决静态网页技术在构建动态应用上的不足 ...
- VMware vSphere 6 Enterprise Plus License
Product: VMware vSphere 6 Enterprise Plus Licensed for 2 physical CPUs (unlimited cores per CPU) Lic ...
- 使用QtScript库解析Json数组例子
本文转载自:http://blog.sina.com.cn/s/blog_671732440100uwxh.html 使用qtscipt库解析json数组首先在工程文件中加 QT += ...
- VS2015 C#6.0 中的那些新特性(转载)
自动属性初始化 (Initializers for auto-properties) 以前我们是这么写的 为一个默认值加一个后台字段是不是很不爽,现在我们可以这样写 只读属性的初始化(Getter-o ...
- LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径 ...