JS阅读笔记——数组[Array]

最近在看zepto源码,里面用到了很多基础知识,借此机会又把基础知识复习和整理了一遍,算是温故而知新吧。先从引用类型Array写起吧

1. length属性

代码:

var arr =[1,2,3];
console.log(arr.length); //3 //数组的length属性不是只读的,通过设置这个属性,,从数组末尾移除项或添加新项
arr.length = 2;
console.log(arr); //[1,2]
arr.length =5;
console.log(arr); //[1,2,undefined,undefined,undefined]

2. 队列方法 push(arg1, arg2, ...)与shift()

push()是向数组末端添加项,shift()是从数组前端移除项。这两个方法都会对原始数组产生变化。

代码:

var arr =[1,2,3];
var count = arr.push(4); //count为push的项数:1
console.log(arr); //1,2,3,4 会对原始数组产生变化 var item = arr.shift(); //item 为取出来的值:1
console.log(arr); //2,3,4 会对原始数组产生变化

3.队列方法 pop()与unshift(arg1, arg2, ...)

这组方法与上组正好相反,pop()是从数组末端移除,shift()是从数组前端向内添加项。大家自行验证。

4. concat()

concat()基于当前数组中的所有项创建一个新数组,如果传递的是一个数组,则会将该数组中的每一项都添加到结果数组中。

代码:

var arr =[1,2,3];
//concat的参数如果是数组,就取出每一项。否则就取出单项
var arr2 = arr.concat(10,11,[12,13],null,{name:123});
console.log(arr); //[1,2,3]
console.log(arr2); //[1, 2, 3, 10, 11, 12,13,null,{name:123}] arr.push(20,21,[22,23],null,{name:123});
console.log(arr); //原数组产生变化[1,2,3,20,21,[22,23],null,{name:123}]

注意这里与push的区别:

  • concat的参数如果是数组,就取出每一项。否则就取出单项
  • push会对原数组产生变化,而concat不会。所以concat后要赋给一个新数组。

之所以会强调上面两点,是有时候我们会发现代码输出的不是我们想要的结果。

5. slice(startIndex, endIndex)

startIndex为起始位置,endIndex为结束位置。

var arr = ['Lucy', 'Lily', 'Zhang San', 'Test'];
//无参数,取全部,即从0到length
var arr3 = arr.slice(); //["Lucy", "Lily", "Zhang San", "Test"]
console.log(arr3); //1个参数,从开始位置取到length
arr3 = arr.slice(1); //从1开始取到length ["Lily", "Zhang San", "Test"]
console.log(arr3); //2个参数,从起始下标取到结束下标 (endIndex - startIndex)项
arr3 = arr.slice(1,3); //从1起始到3结束下 (3-1) 项 ["Lily", "Zhang San"]
console.log(arr3); //如果参数是负数的话,用长度加该数
arr3 = arr.slice(1,-1); //从1到 arr.length-1;
console.log(arr3); //["Lily", "Zhang San"]

6. splice(startIndex, count, arg1,arg2,arg3......)

startIndex:第1个参数,表示要删除项的下标

count :第2个参数, 删除的项数

arg1, arg2,arg3:之后的几项表示要插入的项

代码:

var arr = [1,2,3,4];
arr.splice(0,1); //从0的位置删除1项,[2,3,4]
console.log(arr); var removedItem = arr.splice(1,1,'red','green'); //从1的位置开始删除一项,之后再插入两项 [2, "red", "green",4]
console.log(arr);
console.log(removedItem); //[3]

笔记——js 数组的更多相关文章

  1. [学习笔记]JS 数组Array push相关问题

    前言: 今天用写了一个二维数组,都赋值为零,然后更新其中一个值,结果和预期是不一样,会整列的相同位置都是同一个值. 1.用Chrome的控制台样例如下: arrs[2][2] =1的赋值,竟然是三个数 ...

  2. JS数组学习笔记

    原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...

  3. Js数组里删除指定的元素(不是指定的位置)

    转载自:http://my.oschina.net/zh119893/blog/265964 之前一直是做后端的,从来也没有写过js,但是却一直想学学,也只是基于兴趣而已!现在到了这个公司,确实大量的 ...

  4. Js数组里剔除指定的元素(不是指定的位置)

    s数组里删除指定的元素(不是指定的位置)之前一直是做后端的,从来也没有写过js,但是却一直想学学,也只是基于兴趣而已!现在到了这个公司,确实大量的写js.但也一直都是没有系统的去看过js!都是搞什么查 ...

  5. amazeui学习笔记--js插件(UI增强)--警告框Alert

    amazeui学习笔记--js插件(UI增强)--警告框Alert 一.总结 1.警告框基本样式:用am-alert声明div容器, <div class="am-alert" ...

  6. 前端学习:学习笔记(JS部分)

    前端学习:学习笔记(JS部分) 前端学习:JS学习总结(图解)    JS的简介 JS基本语法 JS内置对象 JS的函数 JS的事件 JS的BOM JS的DOM JS的简介 新建步骤 <body ...

  7. 实现JS数组传递

    //如果只是一维数组 var list = Request.Form.GetValues("diary[]");  public ContentResult TestHtmlTwo ...

  8. 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

    读书笔记 - js高级程序设计 - 第十三章 事件   canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好   有时候即使浏览器支持,操作系统如果缺缺 ...

  9. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

随机推荐

  1. Windows下GNU之gcc体验方法

    Windows 现在在Windows下开发C/C++程序一般都是用微软的编译器,当年的Borland已经成为传说.但是如果你不想付钱的话,也可以考虑Windows下的GCC. 在Windows下体验G ...

  2. Android View事件传递机制

    ViewGroup dispatchTouchEvent onInterceptTouchEvent onTouch View dispatchTouchEvent onTouch 假设View的层级 ...

  3. 【转】Xcode 插件优缺点对比(推荐 20 款插件)

    [转自]http://www.cnblogs.com/dsxniubility/p/5099191.html 1.Alcatraz 类似于管理第三方库的cocoapods,管理插件也有个Alcatra ...

  4. DB2日期和时间函数汇总

    上一篇提到过在DB2中,可以通过SYSIBM.SYSDUMMY1.SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值.则在这篇中,我们直接用VALUES关键字来看看这 ...

  5. [转]JSON.stringify 语法实例讲解

    原文地址:http://www.jb51.net/article/29893.htm 作用:这个函数的作用主要是为了系列化对象的. 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类 ...

  6. [置顶] 文件和目录(一)--unix环境高级编程

    普通文件和目录linux中最多的两类文件,linux中一共有七种类型的文件,如下: 1.普通文件 2.目录 3.字符特殊设备 4.块特殊设备 5.FIFO,又叫命名管道 6.Socket,即套接字 7 ...

  7. (转)HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

  8. C#客户端链接网页需要用到的WebClient

    WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法. WebClient 类使用 WebRequest 类提供对 ...

  9. OOP设计模式[JAVA]——03职责链模式

    职责链模式 Responsibility of Chain 在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求 ...

  10. javascript操作Math对象的方法总结

    //数学函数--abs 返回数字的绝对值 var a; /*a = Math.abs(-12); alert(a); //12 //数学函数--acos 返回数的反余弦数 a = Math.acos( ...