【JS复习笔记】04 数组
JS里的数组其实并不是一个数组,它其实是一个对象,a[1]这种调用方式其实就是一个字面量为1的属性。
因为这东西实际上是一个对象,所以你就可以理解下面这种声明了吧!
var arrName=['我可以是一个字符串',1,true,null,undefined,[1,'23'],{name:'123'},NaN,Infinity];
关于数组长度
- 数组长度:arrName.length。
- 数组长度没有上界,如果你用一个大于length的数组下标来存储一个元素,那么数组长度会变大以容纳新元素,不会发生越界错误。
- 数组的length其实并不是表示数组的元素个数,它实际上表示的是数组的最大整数下标+1。
var arrName=[]
arrName[10000]=1;就比如上面这段代码中arrName.length为10001,但是实际上你知道的,它只有一个元素。
给arrName.length赋值,如果大于当前值,也不会分配更多空间,如果小于当前值,比如新值为100,会导致下标大于且等于100的的元素被删除掉。
关于数组元素的删除
- 前面讲到对象的删除为 delete obj.name或者 delte myObj["name"],而又说道数组其实是一个对象那么当然也是可以delete arrName[2];
- 但是你要知道delete方法过后arrName[2]成了undefined,但是arrName[1]和arrName[3]值不变
- 然而我们脑海中的数组元素的删除通常是想要arrName[3]前移去替代arrName[2]的位置
- 所以JS提供了splice这种方法,arrName.splice(2,3),就是删除下标为2的元素开始的三个元素。当然对于大型数组来说效率不高。
var arrName=[1,2,3,4,5,6];
arrName.length=50
arrName.splice(2,3);//删除后数组为[1,2,6,undefined。。。],arrName.length为47
关于判断一个值是否为数组
var isArray=function(value){
return value && typeof value==='object' && value.constructor===Array;
};
但是上面的方法在识别不同窗口或frame里构造的数组时会失败,所以下面有一种更好的方法
var isArray=function(value){
return Object.prototype.toString.apply(value)==='[object Array]';
};
好吧,这种鬼东西记在这里就得了,别记在脑子里,毕竟容量有限。
关于数组的属性与方法
前面说过了,数组实际上就是对象。那么给数组添加方法和属性都可以像对象那样。
有一点要注意的是,arrName.myName这种属性添加后,arrName.length并没有改变,因为这并不是一个整数类型的属性
【JS复习笔记】04 数组的更多相关文章
- JS自学笔记04
JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...
- 【JS复习笔记】02 对象与函数
好吧,因为很重要的事情,几天没写笔记了. 关于对象: ||可以用来填充默认值,如:myApp.name || "无" &&可以用来避免错误,myApp.NameOb ...
- PHP学习笔记04——数组
<?php // 1.数组的声明,可以直接为数组元素赋值,也可以使用array函数声明数组 /* 索引数组:下标从0开始,依次递增 * 关联数组:字符串为下标 * */ //直接赋值声明数组,不 ...
- Spring MVC 复习笔记04
复习 springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以通 ...
- 【JS复习笔记】07 复习感想
好吧,其实<JavaScript语言精粹>后面还简单介绍了代码风格,优美特性,以及包含的毒瘤.糟粕. 但我很快就看完了,发现其实都在前面讲过了,所以就不写了. 至今为止已经算是把JavaS ...
- 【JS复习笔记】05 正则表达式
好吧,正则表达式,我从来没记过.以前要用的时候都是网上Copy一下的. 这里还是扯一下吧,以后要是有要用到的正则表达式那么就收集到这个帖子里.(尽管我认为不会,因为我根本就不是一个专业的前端,我只是来 ...
- 【JS复习笔记】01 基本语法
数字: JS只有一种数字类型,相当于double.(不知道为什么,我每次打double输入法都会出现逗比了三个字) NaN是一个数值,可以用isNaN(number)检测NaN Infinity表示所 ...
- 【JS复习笔记】03 继承(从ES5到ES6)
前言 很久以前学习<Javascript语言精粹>时,写过一个关于js的系列学习笔记. 最近又跟别人讲什么原型和继承什么的,发现这些记忆有些模糊了,然后回头看自己这篇文章,觉得几年前的学习 ...
- JavaScript语言精粹 笔记04 数组
数组1 数组字面量2 长度3 删除4 列举5 混淆的地方6 方法7 维度 数组1 数组字面量 var empty = []; var numbers = [ 'zero', 'one', 'two', ...
随机推荐
- 4kbps~15kbps语音编码器基础框架ACELP
- 图片上传代码(C#)
//上传 protected void Button1_Click(object sender, EventArgs e) { if (FileUpload1.Ha ...
- [GraphQL] Use GraphQL's List Type for Collections
In order to handle collections of items in a GraphQL Schema, GraphQL has a List Type. In this video, ...
- 学习之路三十六:SQL知识总结 - [游标||字符串分割]
好久没有写文章了,今天把前不久项目用到的SQL知识总结一下. 一丶字符串分割 SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码: )) RETURNS @result T ...
- alt属性和title属性差异---终于分清楚了!
凡是接触过前端的开发者,相信都会接触到<img>标签,自然alt title更是不会陌生,但对他们真正的含义和使用方法,你确定了解吗? 参考: http://www.junchenwu.c ...
- PostgreSQL表空间、模式、表、用户/角色之间的关系
PostgreSQL表空间.模式.表.用户/角色之间的关系是本文我们主要要介绍的内容,表空间,数据库,模式,表,用户,角色之间的关系到底是怎样的呢?接下来我们就开始介绍这一过程. 实验出角色与用户的关 ...
- 让C程序更高效的10种方法(转)
原文:http://blog.jobbole.com/1198/ 代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性.有效性.紧凑性和效率(内存).代码设计比实际执行更难 .因此,每一 ...
- [LeetCode] Longest Valid Parentheses 动态规划
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- [MONGODB]: WHEN ARBITER REQUIRED FOR REPLICA SET
October 27, 2015 · by Srinivas · in MongoDB MongoDB replica sets provide a number of features that ...
- 《Programming with Objective-C》
苹果官方文档:不稳定的传送门 读书笔记共有以下几篇,其他的知识点不重要或者已经熟悉不需记录 <Programming with Objective-C>第三章 Working with O ...