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. 有关OOM KILLER的一些理解

    Linux下有一种OOM KILLER 的机制,它会在系统内存耗尽的情况下,启用自己算法有选择性的kill 掉一些进程. 一.为什么会有OOM killer 当我们使用应用时,需要申请内存,即进行ma ...

  2. mysql 错误解决

    1. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE ...

  3. 记录一次Android交叉编译ffmpeg排查错误

    Android版本手机直播引擎中,引用了libvlc开源库.项目接过来,发现编译脚本中使用了很多用户名下的绝对路径.项目相关人离职,导致这个脚本实际上已经废掉.而且不知道相关路径下有没有其他文件和第三 ...

  4. Java 任务调度

    1.普通方式 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可以快速简单的实现 */ p ...

  5. maven 控制台乱码

    在pom.xml加一条配置 <project> …… <properties> <argLine>-Dfile.encoding=UTF-8</argLine ...

  6. 命令行dump anr traces.txt文件

    adb shell su ps //这里找到自己app对应的pid pid //退出shell 模式 adb pull /data/anr/traces.txt f:\log

  7. JavaScript随笔记(一)基础概念以及变量类型

    一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的 ...

  8. MS-SQL Server字符串处理函数大全

    MS-SQL Server字符串处理函数大全   select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.Index ...

  9. jQuery 源码解析二:jQuery.fn.extend=jQuery.extend 方法探究

    终于动笔开始 jQuery 源码解析第二篇,写文章还真是有难度,要把自已懂的表述清楚,要让别人听懂真的不是一见易事. 在 jQuery 源码解析一:jQuery 类库整体架构设计解析 一文,大致描述了 ...

  10. 【博客迁移】hityixiaoyang.com

    用了快两年简洁的cnblog现在迁移到新域名空间:http://blog.apluslogicinc.com 欢迎来踩啊~~~