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. TCL/Expect交互式自动化测试概要 - - ITeye技术网站

    TCL/Expect交互式自动化测试概要 - - ITeye技术网站 expect是一种基于TCL,能与交互式程序进行"可程序化"会话的脚本语言,是一种可以提供"分支和嵌 ...

  2. hive常见问题解决干货大全

    本人,苦心多时,历经磨难和心血,与大家共同攻克问题难关! 问题一: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive ...

  3. 【转】Nginx系列(三)--管理进程、多工作进程设计

    原博文出于:http://blog.csdn.net/liutengteng130/article/details/46700999  感谢! Nginx由一个master进程和多个worker进程组 ...

  4. POJ 2349 Arctic Network (最小生成树)

    Arctic Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/F Description The Departme ...

  5. HTML5新增的CSS类API

  6. Java NIO类库Selector机制解析(上)

    一.  前言 自从J2SE 1.4版本以来,JDK发布了全新的I/O类库,简称NIO,其不但引入了全新的高效的I/O机制,同时,也引入了多路复用的异步模式.NIO的包中主要包含了这样几种抽象数据类型: ...

  7. mvc annotation-driven作用

    会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter两个bean,是spring MVC为Controller分发请求 ...

  8. 栈的应用1——超级计算器(中缀与后缀表达式)C语言

    这里要学的程序主要用来实现一个功能——输入表达式输出结果,也就是一个计算器.效果如下: 这个程序主要有两个步骤:1.把中缀表达式转换为后缀表达式:2.计算后缀表达式的结果. 首先先明白几个问题: 1. ...

  9. google域名邮箱申请 gmail域名邮箱申请(企业应用套件)指南

    近期一直有朋友问我怎么注冊域名邮箱,于是整理出来,贴出来吧.已经非常具体了,你能够直接对比着做了.什么是域名邮箱? 假设你有一个自己的域名,通过对域名dns进行设置,创建以自己的域名作为邮箱后缀的邮箱 ...

  10. 【M16】谨记80-20法则

    1.开始编写代码时,不要过多考虑效率,而应该首先考虑逻辑的清晰性和代码的可读性. 2.后期通过测试找到效率的瓶颈所在,而不是靠猜测.然后,针对性地去解决.也就是80%的时间去解决这20%的代码.