Js学习(3) 数组
数组本质:
本质上数组是特殊的对象,因此,数组中可以放入任何类型的数据,对象,数组,函数都行
它的特殊性在于键名是按次序排列好的整数 从0开始,是固定的,不用指定键名
如果数组中的元素仍是数组,则为多维数组
数组可以先定义后赋值,也可以声明时即赋值
var arr = []; arr[0] = 'a';
arr[1] = 'b';
arr[2] = 'c'; var arr = [
{a: 1},
[1, 2, 3],
function() {return true;}
]; arr[0] // Object {a: 1}
arr[1] // [1, 2, 3]
arr[2] // function (){return true;}
length属性
返回数组的成员数量,可通过调整length控制数组的大小
Js中的数组是动态的可随时增删,length总是键名中的最大整数加1
由于数组本质上是一种对象,所以可以为数组添加属性,但不影响length的值
var a = []; a['p'] = 'abc';
a.length // 0 a[2.1] = 'abc';
a.length // 0
如果数组的键名数值超出范围,该键名会自动转换为字符串
数组的遍历
可以用for...in
不过会遍历到非整数键名
因此用for,while或forEach
数组的空位
当数组的某个位置是空元素,即两个逗号之间没有任何值,称数组存在空位,空位不影响length属性
数组的空位是可以读取的,返回undefined
使用delete命令删除一个数组成员,会形成空位,且不会影响length属性
var a = [1, 2, 3];
delete a[1]; a[1] // undefined
a.length // 3
然而空位与一开始定义为undefined是不一样的
使用数组的forEach,for...in,Object.keys方法进行遍历,空位会被跳过,undefined不会
类似数组的对象
如果一个对象的所有键名都是正整数或零,并且有length属性,那么语法上称“类似数组的对象”
array like object
根本特征在于有length属性,但不是动态的
典型的类似数组的对象是函数的arguments对象,以及大多数DOM元素集,还有字符串
// arguments对象
function args() { return arguments }
var arrayLike = args('a', 'b'); arrayLike[0] // 'a'
arrayLike.length // 2
arrayLike instanceof Array // false // DOM元素集
var elts = document.getElementsByTagName('h3');
elts.length // 3
elts instanceof Array // false // 字符串
'abc'[1] // 'b'
'abc'.length // 3
'abc' instanceof Array // false
可以通过某些方法把类似数组的对象变成真正的数组
1.数组的slice方法
var arr = Array.prototype.slice.call(arrayLike);
2.通过call()把数组的方法放到对象上面
Js学习(3) 数组的更多相关文章
- 【JS学习】数组过滤方法的使用filter
前言:本博客系列为学习后盾人js教程过程中的记录与产出,如果对你有帮助,欢迎关注,点赞,分享.不足之处也欢迎指正,作者会积极思考与改正. 使用效果: 可以返回参数函数为真的值 //情景:实现从stu数 ...
- JS学习笔记-数组
ECMAScript中没有提供类和接口等的定义,但它却是一门面向对象的语言,由于它能够通过其它 方式实现类似高级语言的面向对象功能,这些内容将在后面的文章中进行一步步的总结.此篇仅对JS中对象作简要说 ...
- js学习篇--数组按升序降序排列
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js学习笔记——数组方法
join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1# ...
- 【学习】js学习笔记---数组对象
一.属性 length 数组的大小.数组的length属性总是比数组中定义的最后一个元素的下标大一,设置属性length的值可以改变数组的大小.如果设置的值比它的当前值小,数组将被截断,其尾部的元素将 ...
- JS学习笔记——数组去重
<script type="text/javascript"> //indexOf"是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码 ...
- JS学习之数组
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- 前端学习之——js解析json数组
** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...
随机推荐
- windows openssh 设置root 目录
默认windows openssh 服务的root 目录是用户账户所在的目录(一般是administrator),但是我们可以通过修改sshd_config 重新修改路径 可选的修改方式 直接修改ss ...
- LDAP学习总结
一.简介: LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议.目录是一个为查询.浏览和搜索而优化的数据库,它成树状结构组织数据,类 ...
- Mysql常见的优化策略
数据库设计方面优化 1.数据库设计符合第三范式,为了查询方便可以有一定的数据冗余.2.选择数据类型优先级 int > date,time > enum,char>varchar &g ...
- HTTP响应过程
完整的一次 HTTP 请求响应过程(一)http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247484648&idx=1&am ...
- Ubuntu 14.10 下安装Ambari 问题汇总
在编译安装Ambari时候遇到了很多问题,现在记录一下 1 got error npm ERR! phantomjs@1.9.12 install while building ambari-web ...
- Python【每日一问】02
问:列表 test = [1,2,3,1,3,4,5,67,7,8,54,1,2,3,4,5,6],如何删除该列表的重复元素? 方法1:利用集合的不重复性 # 利用集合的不重复性 test = [1, ...
- Python安装与Pycharm使用入门
一.安装Python 1.Linux下安装 一般系统默认已安装2.6.6版本,升级成2.7版本, 但 2.6 不能删除,因为系统对它有依赖,epel源里最新的也是2.6版本,所以以源代码的方式安装2. ...
- java.lang.Integer源码浅析
Integer定义,final不可修改的类 public final class Integer extends Number implements Comparable<Integer> ...
- 转apk打包
常规打包方式: -------------------------------------------------------------------------------------------- ...
- Windows和Linux查看端口占用
Windows方法 TCP netstat -aon|findstr "TCP"|findstr "LISTENING"|findstr ":135[ ...