题外话:从事前端开发有很长一段时间了,一直在不断的扩充各种框架的学习,总觉得要学的东西好多,但是技能并没有得到很大的提升,后发现自己一味去追求的它的广度,并没用去深究其深度,所以决定打算从零开始,从最基础的开始稳扎稳打的学习。如果有小伙伴跟我一样觉得进入了瓶颈阶段,不妨静下心来回顾一下基础的东西,或许能看到不一样的景色。

Array

Array对象定义有两种格式,一种是数组字面量(var arr = []),另一种是调用构造函数生成的数组(var arr =  new Array())

我们在平时开发的时候,一般使用的是数组字面量,但至于这俩种定义的方式有什么区别,却也没有去深究。最后在网上查找了一下资料,总结如下:

var arr = [];  //数据原型

var arr =  new Array();  // 对象,比较耗内存

new关键字的使用  ------  除了在需要实例化一个对象,或罕见的需要延时加载数据的情况外,你基本上不需要使用new关键字。在Javascript里分配大量的new变量地址是一项很慢的操作,为了效率起见,你应该始终使用对象符号。

Array对象的方法的有很多种,有些功能相似,经常被搞混淆,现整理一下所有的方法:

1.toString()/toLocalString()  ------- 把数组转化成字符串

这俩个方法都是将数组转化成字符串,但还是有区别的,主要体现在时间和超过三位数的数字上,

时间格式:toString转化为标准格式,toLocaleString会转化为本地格式

数值:toLocaleString会将长度超过三位数的数值从右边开始每三位用逗号间隔开,toString不会

2.join() ------- 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

3.pop() -------  删除并返回数组的最后一个元素

pop相当于数据结构中的pop出栈,后进先出。打个比方,a,b,c,d排队进入只有一个入口的管道,要出来只能依次d,c,b,a出来。

pop() 方法将删除 array 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则不改变数组,并返回 undefined 值。

 注意:这个返回的不是数组,而是删除的元素

  

4.push(ele1,ele2,....,eleX) ------- 向数组的末尾添加一个或更多元素,并返回新的长度。

   push相当于数据结构中的push入栈,因为只有一个入口,所以只能从后面插入。ele为插入的元素,至少插入一个元素,会改变数组的长度

   注意:这个返回的不是数组,而是添加数组后的新长度

5.shift()  ------- 删除并返回数组的第一个元素

shift 和 pop 就相对于一个组合,shift负责开头,pop负责末尾。都不会创建新的数组,而是直接修改原有的数组

shift () 方法将删除 array 的第一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则不改变数组,并返回 undefined 值。

6.unshift()  ------- 向数组的开头添加一个或更多元素,并返回新的长度。

同样 unshift 和 push 就相对于一个组合,unshift负责开头添加,push负责末尾添加。都不会创建新的数组,而是直接修改原有的数组

7.slice(start,end) ------- 从某个已有的数组返回选定的元素

start : 必选,规定从何处开始,0表示第一个元素,如果为负数,表示从数组尾部开始算起的位置,-1为最后一个元素,-2为倒数第二个位置;

end : 可选,规定从何处截止,不包含该处的元素,如果没有设置end值,就表示从起始位置到数组结尾的元素

 注意:slice不是改变原有的数组,而是新建一个新的数组

平时开发中我们要获取数组的最后一个元素,就可以使用 arr.slice(-1) 去获取。

8.split(start,delnum,addele1,addele2,...,addeleX) ------- 插入、删除或者替换一个数组元素

start : 必需,为添加/删除项目的起始位置,如果为负数,表示从数组尾部开始算起的位置,-1为最后一个元素,-2为倒数第二个位置;

delnum : 必需,删除数组元素的个数,如果设置为 0,则不会删除;

addele : 可选,为需要添加的数组元素

  注意:splice改变了原有的数组,同时返回删除的元素,如何没有删除元素,则返回一个空数组

 

9.concat(arr1,arr2,...arrX) ------- 连接两个或更多的数组,并返回结果

  concat不会改变原有数组,而是返回一个新的数组,如果要参数是数组,那么添加的是数组中的元素,而不是数组

10.sort(sortFn) ------- 对数组进行排序操作

sortFn : 可选,对数组排序的函数,如果没有定义此函数,将按照数组元素的首字符编码的顺序进行排序

sort该方法会改变原来的数组,而不会创建新的数组。

排序原理:参数a和b,依次从array数组中取连续的两个元素。如果 函数返回值 小于 0 ,那么 a 会被排列到 b 之前;如果 函数返回值 等于 0 , a 和 b 的相对位置不变;如果 函数返回值 大于 0 , b 会被排列到 a 之前。

扩展: 随机排序 arr.sort( function(){  return Math.random() < 0.5 ? 1 :  -1} )

11.reverse() ------- 颠倒数组中元素的顺序

   reverse该方法会改变原来的数组,而不会创建新的数组。

  

Array对象的方法详情的更多相关文章

  1. Javascript Array对象 sort()方法,记忆方法,方法扩展

    相信 有很多 同仁们,尤其是初学者,在记住 Array对象 sort() 方法的排序,规则上,有点困难: 其实sort()方法已经在实际工作中用到很多遍了,可当我仔细推敲,这个sort()方法,什么时 ...

  2. JS基础语法---Array对象的方法

    Array对象的方法   Array.isArray(对象)---->判断这个对象是不是数组 instanceof关键字 判断对象是不是数组类型:两种方法: //1 instanceof var ...

  3. JavaScript 数组(Array)对象的方法

    JavaScript 数组(Array)对象的方法 concat() 描述:用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 原型:arrayObject.conc ...

  4. Array对象的方法

    * Array.isArray(对象)---->判断这个对象是不是数组 * instanceof关键字 * .concat(数组,数组,数组,...) 组合一个新的数组 * .every(函数) ...

  5. JavaScript Array对象sort() 方法小结

    sort() 方法用于对数组的元素进行排序. 语法arrayObject.sort(sortfunction) 参数sortfunction 可选.规定排序顺序.必须是函数. 返回值对数组的引用.请注 ...

  6. JavaScript Array 对象的方法,比如push和unshift

    https://www.runoob.com/jsref/jsref-obj-array.html js数组与字符串的相互转换 一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: ...

  7. js中数组Array对象的方法sort()的应用

    一. sort()方法的介绍 //给一组数据排序 var arrNum = [12,1,9,23,56,100,88,66]; console.log("排序前的数组:"+arrN ...

  8. JavaScript Array 对象扩展方法

    /** 删除数组中指定索引的数据 **/ Array.prototype.deleteAt = function (index) { if (index < 0) { return this; ...

  9. 内置对象(Math对象、Date对象、Array对象、String对象)常用属性和方法

    Math对象 Math 是一个内置对象, 它具有数学常数和函数的属性和方法.不是一个函数对象. 与其它全局对象不同的是, Math 不是一个构造函数.  Math 的所有属性和方法都是静态的. 跟数学 ...

随机推荐

  1. 什么是 stack?- 每天5分钟玩转 Docker 容器技术(111)

    什么是 stack ?在回答这个问题之前我们先回忆一下前面部署 WordPress 应用的过程: 首先创建 secret. 然后创建 MySQL service,这是 WordPress 依赖的服务. ...

  2. java 单例模式学习笔记

    1.单例模式概述 单例模式就是确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供. 2.优缺点 优点:在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模 ...

  3. 一个Web前端自学者的自述

    想来想去还是写下这篇文章,先说明,我精通JAVA编程语言和web前端常见的技术,个人是做JAVA的多,但是更加喜欢前端.因为我从高一开始接触JAVA,家父是黑马的JAVA讲师,自己对编程很热爱,在大学 ...

  4. 利用GDAL进行工具开源化改造

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 为利于项目实施,团队用AE写过一个插件式的工具集,主要包括了数 ...

  5. ES6异步操作Thunk、co和async

    使用Thunk函数对Generator函数进行流程管理,首先什么是Thunk函数?我们应该先说下参数的求值策略,编译器的求值策略一个是"传值调用"另一个是"传名调用&qu ...

  6. php编码的一些小规范

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/104 最近在整理线上的hhvm warning,虽然每天产生百万 ...

  7. 507. Perfect Number

    We define the Perfect Number is a positive integer that is equal to the sum of all its positive divi ...

  8. ArcGIS API for JavaScript 4.2学习笔记[11] 官方第五章Popups(弹窗)概览与解释

    直接跳过第三第四章了,第三章Layer和第四章可视化,怎么说呢,Layer是组织数据的,是Map的属性之一.可视化属于符号化编程,暂时不看. 第五章是对数据.结果的显示,类似于alert()..NET ...

  9. mysql case when group by实例

    mysql 中类似php switch case 的语句. select xx字段, case 字段 when 条件1 then 值1 when 条件2 then 值2 else 其他值 END 别名 ...

  10. mybatis源码分析(一)

    mybatis源码分析(sqlSessionFactory生成过程) 1. mybatis框架在现在各个IT公司的使用不用多说,这几天看了mybatis的一些源码,赶紧做个笔记. 2. 看源码从一个d ...