数组
1.ECMAScript数组是有序列表,是存放多个值的集合。
特点:
1.每一项都可以保存任意类型的数据
2.数组的大小是可以动态调整的
数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项
2.数组创建
1.数组字面量(由一对包括元素的方括号"[]"表示,元素之间以逗号","隔开)
var arr=['terry','larry','zhangsan'];
//可以接受任意数据类型当作数组的元素
var arr=['hello',12,undefiend,null,function(){},[],true,{}];
//通过数组下标访问对应的数据
console.log(arr,arr[2]);
//获取数组的长度
console.log(arr.length);
2.使用构造函数
var arr=new Array();等价于var arr=[];
// 如果一个参数,并且是number类型的整数,则代表的是数组的长度。
如果是number类型的小数,则报错。如果是其他类型,则当做数组元素放进去。
//var arr = new Array(length); 创建一个长度为length的数组
var arr = new Array(5); //创建一个包含5个元素的数组
var arr = [undefined,undefined,undefined,undefined,undefined];
var arr=new Array(1.1)//报错
var arr=new Array('terry');//相当于创建包含一个元素的数组,且数组元素为'terry'
// 两个参数或者多个参数,当做数组元素放进去
var arr = new Array('terry','larry')//创建一个数组,数组中的元素使用实参初始化
3.数组访问
数组变量名[索引];
//如果索引小于数组的长度,返回对应项的值
var arr = ["terry","larry","zhangsan"];
arr[0] ; //访问数组中第一个元素,返回值为terry
//如果索引大于等于数组的长度,返回undefined
var arr = ["terry","larry","zhangsan"];
arr[10] //undefined;
//如果给索引大于等于数组的长度的位置设置了值,数组自动增加到该索引值加1的长度
var arr = ["terry","larry","zhangsan"];
arr[3] ="lisi"; //添加元素,数组长度变为4;
arr.length=2;
console.log(arr)
4.遍历数组
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}
for(let key in arr){
console.log(key,arr[key])
}
5.数组API
5.1数组序列化
toString() 在默认情况下都会以逗号分隔字符串的形式返回数组项
join() 使用指定的字符串用来分隔数组字符串;
var arr = [1,2,3,4,5,{a:1}];
console.log(arr);//[ 1, 2, 3,4, 5, { a: 1 } ]
console.log(arr.toString());//”1,2,3,4,5,[object Object]”
console.log(arr.join(""));//”12345[object Object]”
console.log(arr.join("-"));//”1-2-3-4-5-[object Object]”
5.2构造函数的方法(只能由构造函数本身去调用)
Array.isArray()
用来判断某个变量是否是一个数组
Array.from();
将类数组对象转换为一个数组
var arr='string';
var result=Array.from(arr);
console.log(result);
5.3栈和队列方法
push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。
参数:想要添加的数组元素 返回值:新的数组长度
pop()方法用于删除数组的最后一个元素并返回删除的元素。
参数:无 返回值:返回删除的元素
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
参数:无 返回值:删除的元素;
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
参数:想要添加的数组元素 返回值:新的数组长度
5.4:排序方法
reverse() 方法用于颠倒数组中元素的顺序。
参数;无 返回值:颠倒顺序后的数组
sort();用于对数组的元素进行排序
sort() 方法用于对数组的元素进行排序。
如果调用该方法时没有使用参数,将按字母顺序(Ascall编码)
对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
参数:无或者函数 返回值:排序后的数组
5.5操作方法
concat() 方法用于连接两个或多个数组。
参数:拼接的数组,返回值:返回新的数组
slice() 方法可从已有的数组中返回选定的元素。
参数:开始位置 结束位置 返回值:返回一个新的数组,包含从start到 end(不包括该元素)数组中的元素。
splice() 方法用于添加或删除数组中的元素。
参数:index 必须必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany:可选。规定应该删除多少元素。必须是数字,但可以是 "0"。
如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
添加的元素:可选。要添加到数组的新元素
返回值:如果从数组中删除了元素,则返回的是含有被删除的元素的数组
5.6位置方法
indexOf()方法可返回数组中某个指定的元素位置。
参数:查找的元素 返回值:元素在数组中的位置,如果没有搜索到则返回 -1
lastIndexOf()方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。
参数:查找的元素 返回值:返回元素最后的索引
5.7迭代方法
every() 方法用于检测数组所有元素是否都符合指定条件。
参数:function函数(item,index,arr)
返回值:布尔值。如果所有元素都通过检测返回 true,否则返回 false。
some() 方法用于检测数组中的元素是否满足指定条件。
参数:function函数(item,index,arr)
返回值:如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
参数:function函数(item,index,arr)
返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
参数:function函数(item,index,arr)
返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
参数:function函数(item,index,arr)
返回值:undefined。