今天讲js的数组。数组是js中最基础的数据结构了。

  主要讲讲数组实现栈,队列以及其他的基本操作。栈和队列都可以在数组头尾位置处理,所以,都有两种方式。

  属性

  1、length : 长度,表示数组元素的个数。

  方法

  1、实现栈,先进后出。注意,下面两组是配对出现

    入栈:Array.unshift(obj) 在数组第一个元素插入数据

    出栈:obj = Array.shift() 取出第一个元素,返回第一个元素后,删除第一个元素

-------------我是华丽的分割线------------------------------

    入栈:Array.push(obj) 在数组尾部添加一个元素

    出栈:obj.pop() 在数组尾部取出一个元素

  2、实现队列,先进先出。

    入队:Array.push(obj) 在数组尾部添加一个元素

    出队:obj = Array.shift() 取出第一个元素

-------------我是华丽的分割线------------------------------

    入队:Array.unshift(obj) 从数组头插入一个元素

    出队:obj = Array.pop() 从数组尾部取出一个元素

  3、拼接数组,array = Array.concat(array,array,,,)

    all = array1.concat(array2,array3,,,,,,),将array2的头拼接在array1的尾部,array3拼接在已拼接的array1,array2的后面,举个栗子。

    

var parents = ["Jani", "Tove"];
var brothers = ["Stale", "Kai Jim", "Borge"];
var children = ["Cecilie", "Lone"];
var family = parents.concat(brothers, children);
console.log(family) //输出Jani,Tove,Stale,Kai Jim,Borge,Cecilie,Lone

  4、将数组转换成字符串。string = Array.join()

    join()会返回一个字符串,并且,原先数组里面的元素用','隔开。举个栗子。

var parents = ["Jani", "Tove"];
str = parents.join() // 'Jani,Tove'

  所以这样很适合分割和合成。

  5、随意复制数组,array = Array.slice(startAt, endAt)

    这里有亮点,所以用粗体,同学们细心了。注意区分 不传参数,传入一个参数,传入两个参数,还有出入正负数的区别。

    5.1 数组深度复制看栗子

    

var arr = ['aa','bb','cc']
var arr2 = arr;
arr2.pop();
console.log(arr)//输出['aa','bb']这是因为arr2 和 arr指向同一个地址 arr == arr2; // true //深度复制的话酱紫做或者酱紫 arr3 = arr.alice(0)
arr3 = arr.slice();//这样会重新开辟memory,所以arr3的任何操作对arr都没有影响 arr == arr3; //false

    5.2 从第某个元素开始复制后面所有的元素

    arr = arr2.slice(2);//arr将arr2[2]  -- arr2[arr2.length-1]复制

    arr = arr.slice(-2)// arr 将 arr2[arr2.length-1-2] -- arr2[arr2.length-1]复制,,就是倒数的两项

    5.3 取数组的某几项,且看栗子

    

var a = [1,2,3,4,5];

a.slice(0,3);    // 返回 [1,2,3]

a.slice(3);      // 返回 [4,5]

a.slice(1,-1);   // 返回 [2,3,4]

a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]

  6、随意改变数组 array.splice(startAt, removeCount, obj1,obj2,,,,,,)继续看栗子

var a = [1,2,3,4,5,6,7,8]

a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]

a.splice(1,2);      // 返回 [2,3]; a is [1,4]

a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,应该返回 [4]

a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,应该返回 []
Bug
方法splice()假定在各种情况下均返回一个包含已删除元素的数组。
但是,在 Netscape的JavaScript 1.2解释器中,如果删除的是单个元素,那么该方法返回的是元素,而不是包含那个元素的数组。
如果没有删除任何元素,它不是返回一个空数组,而是什么都不返回。
只要把语言版本明确地设置为1.2,JavaScript的Netscape实现都有这种bug行为。

  

  每次都晚上写,一下就晚了。原创作品,转载请注明出处:http://zhutty.cnblogs.com

  如果你也喜欢与人交流分享,可加群:164858883

  如果我的博客对你有帮助,不吝捐赠。

 

    

Javascript 精髓整理篇之三(数组篇)postby:http://zhutty.cnblogs.com的更多相关文章

  1. JavaScript 精髓整理篇之一(对象篇)postby:http://zhutty.cnblogs.com

    废话篇头: 由于工作关系,所以写博文的时间有那么点~~,其实是输入法太懒了,都是输入法的错~~ 这一系列的博客将总结所有关于JavaScript语言的精髓,适合0基础到大师级别人物阅读. <Ja ...

  2. Javascript 精髓整理篇之二(函数篇)postby:http://zhutty.cnblogs.com

    今天总结的内容是javascript的function, 涉及到function顺便讲讲this. Function 是javascript的函数,也是js的执行单元.函数是JavaScript的一种 ...

  3. 轻量级mvvm Web开发框架 postby:http://zhutty.cnblogs.com

    今天特别郁闷,怎么说呢,之前一直就用angular,然后这两天用的是avalon这东西,反正,一开始没时间去玩它,第一个任务就是封装个jq插件,实现一个小功能.反正呢,就是越写越郁闷.用过angula ...

  4. LeetCode刷题总结-数组篇(下)

    本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...

  5. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  6. JavaScript中的正则表达式(终结篇)

    JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...

  7. PHP学习笔记之数组篇

    摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇   一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...

  8. Lodash数组篇

    概念简述 lodash 是一个类库 Lodash 通过降低 array.number.objects.string 等等的使用难度从而让 JavaScript 变得更简单 用法  let _ = re ...

  9. 【持续更新】leetcode算法-数组篇

    会在近期陆续地完成数组篇的整理,希望对找工作的小伙伴有所帮助.   1.Two Sum:两数相加为一固定值,求其下标.一次遍历数组,用一个hash表存储已经访问过的数及其下标,对于新访问的数value ...

随机推荐

  1. centos6 安装vsftpd

    centos6 安装vsftpd vsftpd一般选择yum安装,以下是安装和配置过程 如果是centos6想要安装的话一般是编译安装 1.安装 yum安装 yum install vsftpd 编译 ...

  2. SpringMVC05使用注解的方式

    <body> <a href="add">新增</a> <a href="update">修改</a> ...

  3. SqlServer数据库设计,纠结的问题,有胆你就来!

    最近,小菜遇到了数据库设计上的一个问题,希望各位大侠再次,直抒己见,帮忙分析一下.也可有更好的设计,请直接提出来. 要求:数据库(SQL Server 2005)存储每个学生,单个客观题答案.分数,主 ...

  4. c - 2/1, 3/2, 5/3, 8/5, 13/8...前20项的和

    double pres(const int n) { ; //分子. ; //分母. ; double tmp; ; i <= n; i++) { sum += (numerator / den ...

  5. mssql SUBSTRING和charindex的用法

    在工作中用到的例子: select * FROM [CSGDC.DataETLDB].[dbo].[StrategiesList] where strategy_name like '%基建系统%' ...

  6. PHP中的定界符格式

    <?php //nowdoc(单引号定界符) //ABC可以是任合内容,放在单引号中 $c=<<<'ABC' 这里可以是任合内容 我是历的苛夺基 本原则叶落归根在运 输费艰难田 ...

  7. JQuery操作下拉框 select

    要实现这种效果: html代码 1<script src="js/jquery-1.7.2.min.js"></script> 2 <table> ...

  8. php cgi 与 cli 区别

    以CGI方式运行时,web server将用户请求以消息的方式转交给PHP独立进程,PHP与web服务之间无从属关系:CLI则是命令行接口,用于在操作系统命令行模式下执行PHP,比如可以直接在win的 ...

  9. Webbrowser判断页面加载完成

    Webbrowser 请求加载页面,页面中包含各种资源,不能够很准确的判断加载是否完成,需要通过特定的方法判断. 1.使用计数器判断页面是否加载完成.精准可控. // 计数器 ; // 添加事件响应函 ...

  10. APMServ5.2.6升级PHP

    前言:这两天闲着没事,就想学一下ThinkPHP.学习ThinkPHP要先安装好Apache.MySQL .PHP等运行环境. 为了方便起见,打算就用集成环境.ThinkPHP官方网站推荐的是“WAM ...