Javascript 精髓整理篇之三(数组篇)postby:http://zhutty.cnblogs.com

今天双十二,本又是剁手的一天。不知道今天为什么,好像很多感慨。工作快两年了,感觉时间好快。没有存款。。。。。>_<

  算了,进入正题吧。今天讲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

  如果我的博客对你有帮助,求救济,早日找到女票。>_<

 

    

时间: 2025-01-17 11:54:03

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

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

废话篇头: 由于工作关系,所以写博文的时间有那么点~~,其实是输入法太懒了,都是输入法的错~~ 这一系列的博客将总结所有关于JavaScript语言的精髓,适合0基础到大师级别人物阅读. <JavaScript 精髓整理篇>将系统整理Javascript语言精要.欢迎们加入我信息栏中的qq群,我们可以一起探讨.qq群:164858883 精华不容错过: 随着nodejs的火爆,以及移动开发的热潮,js的地位已经火速上涨. JavaScript 精要可以从下面11个关键类型入手:Object.A

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

今天是2015-11-25,今天做了件很傻逼的事.在此向各位网友告诫,有时候做事宁愿武断也不要犹豫,犹豫是万恶之源,是失败之母.在此,向灿和说声抱歉.机会只有一次,且行且珍惜. 废话不多讲了,开篇吧.今天总结的内容是javascript的function, 涉及到function顺便讲讲this. Function 是javascript的函数,也是js的执行单元.函数是JavaScript的一种基本数据类型.注意,虽然可以用这里介绍的Function()构造函数创建函数对象, 但这样做效率不高

JavaScript Good Parts学习笔记-数组篇

数组是一段线性分配的内存.通过计算偏移来访问其中的元素. 不幸的是,JavaScript并没有像数组一样的数据结构 作为替代,JavaScript提供了类数组的对象,把数组下标改为字符串. 1 数组字面量(Array Literals)---继承自Array.prototype,所以继承了大量有用的方法,比如length属性 var empty = [];var numbers = [    'zero', 'one', 'two', 'three', 'four',    'five', 's

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

今天特别郁闷,怎么说呢,之前一直就用angular,然后这两天在入职,我们公司用的是avalon这东西,反正,一开始没时间去玩它,第一个任务就是封装个jq插件,实现一个小功能.反正呢,就是越写越郁闷.用过angular的同学在去用jq应该都会有这种感觉吧.多此一举,费事.主要是,jq去一个一个操作dom树,把我搞郁闷了,最后,插件好了,但在一个地方用了好几次,这下好了,出问题了.问题像是这样的,晒出来供大家吐槽. $.fn.PlaginName = function($){ //这个插件实现的内

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

导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数.然而,这些数字索引在内部被转换为字符串类型,这是因为 JavaScript 对象中的属性名必须是字符串.在内部被归类为数组.由于 Array 在 JavaScript 中被当作对象,因此它有许多属性和方法可以在编程时使用. 使用数组: 1.创建数组 使用 [] 操作符 ,var a

数据结构与算法javascript描述笔记--数组篇

数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数.然而,这些数字索引在内部被转换为字符串类型,这是因为 JavaScript 对象中的属性名必须是字符串.在内部被归类为数组.由于 Array 在 JavaScript 中被当作对象,因此它有许多属性和方法可以在编程时使用. 使用数组: 1.创建数组 ① 使用 [] 操作符 ,var arr=[] ,该方法效率最高. ② 调用 Array 的构造函数创建数组,var myArr=new

javascript精髓篇之原型链维护和继承.

一.两个原型 很多人都知道javascript是原型继承,每个构造函数都有一个prototype成员,通过它就可以把javascript的继承演义的美轮美奂了.其实啊,光靠这一个属性是无法完成javascript的继承.我们在代码中使用的prototype完成继承在这里就不多说了.大家可以查一下资料.另外一个看不见的prototype成员.每一个实例都有有一条指向原型的prototype属性,这个属性是无法被访问到的,当然也就无法被修改了,因为这是维护javascript继承的基础. 1 //构

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

JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScript中的使用: JavaScript对正则表达式的支持程度 支持正则表达式的RegExp类型 RegExp的实例属性 RegExp的实例方法 RegExp的构造函数属性 简单的应用 第一部分:JavaScript对正则表达式的支持程度 之前我介绍了正则表达式的基本语法,如果大家不是很了解可以先看下面

【史上最强JavaSE笔记】之数组篇

各位程序猿,各位攻城狮,各位蜥蜴鸥以及各位棕鲸鲤们~~大家好,我是潘师傅,欢迎大家收看由我为你们带来的[史上最强JavaSE笔记]系列,其实也可以叫[嘻哈JavaSE笔记]的,第一次在博客园发帖,想想还真是有点小激动呢,各位求支持呀,哈哈,那么回归正题,我把自己之前学习积累的笔记拿出来跟大家分享一下,方便大家更好的理解和复习,希望能够对大家有所帮助哈,这次发的是JavaSE方面数组篇的,内容不一定全面哦,欢迎大家前来留言交流哈,不足的地方还望大家多多指出和指导哈~(由于首次发文章,布局可能比较乱