javascipt——对象的概念——数组
一、Array
特点:
数组的长度是可变的;
数组的索引可以是数字、字符串;
数组的内容可以是任意内容;
可以通过索引获取之前不存在的一个位置,其值为undefined;
1、构造函数:
new Array();
new Array(length);
new Array(element0, element1, ..., elementn);
例:var a=new Array(1);a[0]; //undefined; 在初始化时,指定其长度为n,由于尚未指定数组内容,因此获取时只能是undefined;
由于javascript不是一门强类型的语言,所以索引可以是数字、字符串;其内容可以是任意类型的数据
3、length:获取或设置数组的长度
var a= new Array(3);var a=[1,2,3];a[5]=5; a['1']='1';a['a']='a';
a['1']; //"1"
a[1]; //"1"
a['a']; //"a"
a.a; //"a"
a[a]; //undefined
a.length; //6;
如上所示, a['1']='1'; 当索引为字符串且字符串内容为数字时,javascript隐式将其转换为数字,并将内容 '1' 替换数字 1 。
当索引为其他字符串时,如:a['a'] 实际上是将其作为数组的一个属性而非数组内容,因此既可以通过索引访问。也可以通过属性访问,如:a.a;
(1)、即使初始化指定 length,也可以在超出范围的索引进行操作,如上例,设置 length 为3,a[5]=5;则 length被修改为6;
(2)、length 属性表示的只是 索引为数字或可以隐式转换为数字的元素数量。在上面的例子中,由于 a['a'] 实际上通过数组的属性操作而不是索引,所以对 length 属性无影响,此时执行 a.length; //6; 可见其并没有包含a['a']
(3)、当设置的 length 属性小于当前元素时,超出该范围的元素将被移除。例:
var a= new Array(3);var a=[1,2,3];a[5]=5; a['1']='1';a['a']='a';
a; //[1, "1", 3, undefined × 2, 5]
a[5]; //5;
a.length; //6;
a.length=5; //5;
a[5]; //undefined;
a.a; //"a"
a['a']; //"a"
注意即使 a.length=0;此时依然可以通过 a['a'] 获取数据,再次证明通过字符串索引操作数组只是操作数组的属性而不是数组元素。
4、delete:删除数组元素;
delete 将元素内容删除,其值变为 undefined,因为在javascript中,不存在的东西均为 undefined;
例:
var a= new Array(3);var a=[1,2,3];a[5]=5; a['1']='1';a['a']='a';a; //[1, "1", 3, undefined × 2, 5];
delete a[0]; delete a['a']; //true;
a; //[undefined × 1, "1", 3, undefined × 2, 5]
a['a']; //undefined
a.length; //6
5、 for——in 循环:用于遍历数组、对象,但不能取代常规的 for 循环
var result='';
for(var i in a)
{
result=result+'index: '+ i+', value: '+a[i]+';';
}
result;
//"index: 0, value: 1;index: 1, value: 1;index: 2, value: 3;index: 5, value: 5;index: a, value: a;index: clone, value: function (){ return this.concat(); };"
6、数组常用方法
| 方法 | 说明 |
| arr1.concat(arr2) | 连接两个或更多的数组;但不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 |
| arr1.join(separator) | 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。否则默认为, |
| arr1.pop() | 删除并返回数组的最后一个元素;直接改变原数组。 |
| arr1.push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
| arr1.reverse() | 颠倒数组中元素的顺序;直接改变原数组。 |
| arr1.shift() | 删除并返回数组的第一个元素;直接改变原数组。 |
| arr1.unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。 |
| arr1.slice(start,end) | 从某个已有的数组返回选定的元素但不修改数组;参数为正表示从左往右数,负表示从右往左数;返回数据包含 start,但不包含 end; |
| arr1.sort(function) | 对数组的元素进行排序;参数函数用于规定其排序顺序,没有参数则默认按照字符编码的顺序进行排序;小的排在大的前面; |
| arr1.splice(index,n,data……) | 删除n个元素,并向数组添加任意个新元素;直接修改原始数组。返回被删除的元素。 |
| arr1.toSource() | 返回该对象的源代码。只有 Firefox 支持。 |
| arr1.toString() | 把数组转换为字符串,并返回结果。 |
| tarr1.toLocaleString() | 把数组转换为本地数组,并返回结果。使用地区特定的分隔符把生成的字符串连接起来 |
| arr1.valueOf() | 返回数组对象的原始值 |
例:
- concat():
var a=new Array(3);a[0]=0;a[1]=1;a[2]=2; var b=new Array(3);b[0]=3;b[1]=4;b[2]=5;
a.concat(b); //[0, 1, 2, 3, 4, 5];
a; //[0, 1, 2]; 证明 concat() 方法并没有改变原有数组;
a.concat(b,a); //[0, 1, 2, 3, 4, 5, 0, 1, 2]
a.concat(b).concat(a); //[0, 1, 2, 3, 4, 5, 0, 1, 2] 与上面的方式结果一致
- join()
a.join(); //"0,1,2"
a.join('|'); //"0|1|2"
- pop()
a.pop(); //2;返回最后一个元素 2 ;并删除该元素
a; //[0, 1];
- push()
a.push(2); //3; 数组新的长度为3
a; //[0, 1, 2]
- reverse()
a.reverse(); //[2, 1, 0];
a.reverse(); //[0, 1, 2];
- shift()
a.shift(); //0; //返回数组原来的第一个元素;
a; //[1, 2]
- unshift()
a.unshift(0); //3 ;数组新的长度;
a; //[0, 1, 2];
- slice(start,end):参数从0开始,返回数据包含 start,但不包含 end; 无 end 表示到最后。
a.slice(1); // [1, 2]; 从第二个数据开始,到最后
a.slice(1,2); //[1]; 从第二个数据开始,到第三个数据结束,但不包含第三个数据。
a.slice(1,-2); //[]; 从第二个数据开始,到倒数第二个数据结束,但不包含倒数第二个数据。而 a 的第二个数据也是倒数第二个数据,所以无返回值。
a.slice(-2,-1); //[1]; 从倒数第二个开始,到倒数第一个截止,但不包含倒数第一个
- sort()
a.sort(); //[0, 1, 2];
var a=new Array(3);a[0]='18';a[1]='10';a[2]='2';a; //["18", "10", "2"];
a.sort(); //["10", "18", "2"]; 默认按照字符编码的顺序进行排序;从第一位开始排序;
可以提供比较函数,按照自定义规则进行排序,比较函数提供要比较的两个参数,然后返回一个用于说明这两个值的相对顺序的数字。
如:比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
例:function sortab(a,b) { return a-b; } a.sort(sortab); //["2", "10", "18"] //在 - 运算时,现将参数隐式转换为数字;

- splice(index,n,data……)
var a=new Array(3);a[0]=0;a[1]=1;a[2]=2;a; //[0, 1, 2];
a.splice(1,1,'好的','坏的'); //[1]; 返回被删除的与元素。
或
var b=['111','222'];a; //[0, "好的", "坏的", 2]; 将两个元素 '好的','坏的' 插入被删除元素的位置。
a.splice(1,2,b); //["好的", "坏的"]; 返回被删除的元素
a; //[0,Array[2], 2]; 上一步中插入的数据是一个数组,所以出现这种情况。
a[1][0]; // "111"

- toString()
a.toString(); //"0,111,222,2"
- toLocaleString()
a.toLocaleString(); //"0,111,222,2"
- valueOf()
a.valueOf(); //[0,Array[2], 2]
javascipt——对象的概念——数组的更多相关文章
- 关于JavaScipt对象的基本知识
关于JavaScipt对象的基本知识 JavaScript是运用“对象化编程”的,又叫“面向对象编程”的.所谓“对象化编程”,意义是把JavaScript能涉及的领域划分成各种对象,对象后面还连续划分 ...
- [Effective JavaScript 笔记]第58条:区分数组对象和类数组对象
示例 设想有两个不同类的API.第一个是位向量:有序的位集合 var bits=new BitVector(); bits.enable(4); bits.enable([1,3,8,17]); bi ...
- OC中对象拷贝概念
OC中的对象拷贝概念,这个对于面向对象语言中都会有这种的问题,只是不同的语言有不同的解决方式:C++中有拷贝构造函数,Java中需要实现Cloneable接口,在clone方法中进行操作.但是不过OC ...
- 简述JavaScript对象、数组对象与类数组对象
问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...
- yii2得到的数据对象转化成数组
yii2得到的数据对象转化成数组需要用到asArray().1.Customer::find(['id' => $id])->asArray()->one();2.$model = ...
- struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组
在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...
- js之数组,对象,类数组对象
许久不写了,实在是不知道写点什么,正好最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,这里就简单对于定义以及一下相同点,不同点 ...
- 如何向java后台的对象中传数组
1.后台对象的参数需要是是list对象 /* * copyright : GLOBALROAM Ptd Ltd * VmCreateInfo.java * Author: * zhangpengyan ...
- JSON对象与JSON数组的长度和遍历方法
JSON对象与JSON数组的长度和遍历方法 1.json对象的长度与遍历 结构:var json={“name”:”sm”,”sex”:”woman”} ...
随机推荐
- linux命令:rm 命令
昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...
- 爬虫之解析库-----re、beautifulsoup、pyquery
一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...
- JMeter报错 ERROR o.a.j.t.JMeterThread: Test failed!
第一次用JMeter,然后跟着教程走,发现进行测试的时候直接报错 显示如下 反复测试依然报错,网上搜索也没什么结果,自己测试了一下才发现问题. 左边创建了CSV DATA 但是并没有进行设置 导致报 ...
- 获得一个list中某元素的索引值
list = [1,2,3,3,2,1] list.index(1) # 只能获得首个1的索引值 如果要获得所有该元素的索引值 import numpy as np arr = np.array(li ...
- java 如何保证接口的安全性
在开发过程中,肯定会有和第三方或者app端的接口调用.在调用的时候,如何来保证非法链接或者恶意攻击呢? 1.签名 根据用户名或者用户id,结合用户的ip或者设备号,生成一个token.在请求后台,后台 ...
- Python爬虫之利用正则表达式爬取内涵吧
首先,我们来看一下,爬虫前基本的知识点概括 一. match()方法: 这个方法会从字符串的开头去匹配(也可以指定开始的位置),如果在开始没有找到,立即返回None,匹配到一个结果,就不再匹配. 我们 ...
- EDID真实数据块,请参考标准文档仔细核对
数据格式的详细说明:http://en.wikipedia.org/wiki/Extended_display_identification_data 下面是一个例子:
- Django 基础 ORM系统
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- java学习笔记--常用类
一.Math类:针对数学运算进行操作的类 1.常用的方法 A:绝对值 public static int abs(int a) B:向上取整 public static double ceil( ...
- 2018.7.9 AVR-BAT program
I had some problems programming the produced . Here is what worked well for me: -------------------- ...