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," ...
随机推荐
- 聊聊Java反射
反射是Java最重要的特性.通过Java反射可以在运行时知道一个类的所有成员和方法,知道一个对象的类类型.成员和方法的所有信息,进而调用对象的方法或生成对象的代理或包装类. Java是面向对象语言,除 ...
- Django学习笔记之数据库-QuerySet_API
QuerySet API 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作.其实模型名字.objects是一个django.db.models.manager.Manager对 ...
- 十九、springcloud(五)配置中心本地示例和refresh
1.创建spring-cloud-houge-config子项目,测试需要的项目入下 2.添加依赖 <dependency> <groupId>org.springframew ...
- oData 排序字段生成
跟踪SQL 发现生成的SQL中所有的字段都进行了排序,查看OData原代码,发现如果实体有Key,就按照Key asc 加上指定字段进行排序 属性 EnsureStableOrdering可以控制是否 ...
- 浏览器调试动态js脚本
前两天拉取公司前端代码修改,发现在开发者工具的sources选项里边,居然没有列出来我要调试的js脚本,后来观察了一下,脚本是动态在页面里引入的,可能是因为这样所以不显示出来,但是如果不能断点调试,只 ...
- 测试技术/网游Bug分析/单机修改 视频教程
早期做的一些视频,测试技术/Bug讲解/单机修改,有兴趣的同学自行下载看吧 由于是早期录制的,有口误多包涵... 链接: http://pan.baidu.com/s/1i5JUKPf 密码: a1x ...
- js window.location用法
<script> //设置或获取 href 属性中跟在问号后面的部分. console.log(window.location.search)//设置或获取对象指定的文件名或路径conso ...
- 创建一个HTTP接口测试
jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具. Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对 ...
- MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.10.210' (111) 解决方法
今天在测试MySQL的连接时候,发现连接不通过,并报错ERROR 2003 (HY000): Can't connect to mysql server on '192.168.10.210' (11 ...
- 数据访问安全--数据库遮罩及断词 Data Masking & Tokenization
现在大数据时代几乎无隐私,各政府部门各公司都要求实名制(动不动手机认证,身份证号码认证),但又无力确保数据安全,称为乱象. 其实在2011年,我们就接触过数据库遮罩断词产品,一个澳大利亚公司产品. 简 ...