1.什么是数组
组:由多个成员构成的一个集体。
数组:数组是值的有序集合
值:就是前面所讲过的这些数据(各种数据类型的都可以);
演示:
var a = 100;
var b = 'js';
var c = true;
注意:以上是分开写的
数组演示:
var arr1 = [100,'js',true];
var arr2 = ['js',100,true];
// 注意:在数组中,每一个值(如100,’js’,true)都称之为一个元素。
// 每一个元素在数组中所处的位置,称之为索引。是数字来表示,从0开始。
数组的作用
//1.可以存储多个数据;
//2.便于数据的管理和操作;
创建数组
在js中,创建数组有两种方式:
1.直接量(字面量)
2.new的方式
1.直接量(字面量)
var arr = [];//空数组
console.log(arr);//[]
var arr1 = ['5',2,true,null,'word'];
console.log(arr1);//['5', 2, true, null, 'word']
2.new的方式
var str = new Array()//相当于一个空数组
console.log(str);//[]
关于new Array()的参数说明:
1.new Array();括号里面不传参,表示创建一个空数组.
var str = new Array()
console.log(str);//[]
2.new Array();括号里传了一个数字参数;这个参数表示数组的长度,
var str = new Array(5);
console.log(str);//length: 5
3.new Array();括号里传一个非数字参数,这个参数表示数组项;
var str = new Array('word');
console.log(str);//['word']
4.new Array():括号里面传多个参数时,这些参数都是数组项
var str = new Array(5,6);
console.log(str);// [5, 6]
数组的基本操作
1.数组的类型
注意:JavaScript数组是对象的特殊形式
var num = [];
console.log(typeof(num));//object
2.数组的属性:length
数组.length==数组的长度
获取数组的长度:
var arr = [1,2,'3',true,undefined];
console.log(arr.length);//5
设置数组的长度:
var str = [1,2,3];
str.length = 10;
console.log(str);//length: 10
注意:当设置长度为0时,可以清空数组;
var str = [1,2,3];
tr.length = 0;
console.log(str);//[]
说明:
1.JavaScript数组是动态的,根据需要它们会增长或缩减
2.数组元素的索引不一定要连续的,它们之间可以有空缺。
3.数组的索引:
获取数组的元素:
语法格式:数组[下标];
// 数组索引(下标)
var str = [5,'6','7',true,null,{}];
console.log(str[0]);//5
console.log(str[1]);//'6'
//开始下标为0,最大下标为arr.length - 1
//获取数组的最后一个元素
console.log(str[str.length - 1]);//{}
注意:当获取的数组项,超出数组的下标范围内,(该位置上没有值时)返回undefined;
var arr1 = [5,6,'word',null,undefined];
console.log(arr1[7]);//undefined
// 注意:当获取的数组项,超出数组的下标范围,返回就是undefined
console.log(arr1[-1]);//undefined
4.修改数组项:
语法格式:数组[下标] = 值;
var arr1 = [5,6,'word',null,undefined];
console.log(arr1);//[5,6,'word',null,undefined];
arr1[0] = '加油';
console.log(arr1);//['加油', 6, 'word', null, undefined]
5.增值:
var arr1 = [5,6,'word',null,undefined,{}];
console.log(arr1);
arr1[10] = '上海';
console.log(arr1);//[s5, 6, 'word', null, undefined, {…}, empty × 4, '上海']
向数组的末尾添加一项内容:
var arr = [5,6,'word',null,undefined,{}];
arr[arr.length] = '加油';
删除数组的最后一项:
var arr = [5,6,'word',null,undefined,{}];
// arr[arr.length] = '加油';
arr.length = arr.length - 1;
console.log(arr);
6.遍历数组:
var arr = [5,6,'word',null,undefined,{}];
for(var i =0; i < arr.length;i++){
console.log(arr[i]);//[5,6,'word',null,undefined,{}]
}
操作数组方法
1.push()
语法:array.push(arr1,arr2,...arrx);
功能:向数组的末尾添加一个或者多个元素
返回值:新数组的长度
实例:
var a = [1,2,3,4,5];
a.push(1);
console.log(a);
2.pop()
语法:array.pop()
功能:删除数组中最后一个元素
返回值:删除的那个值
实例:
var a = [1,2,3,4,5];
a.pop();
console.log(a);
3.unshift()
语法:array.unshift(arr1,arr2,...,arrX)
功能:向数组的头部添加一个或多个元素
返回值:新数组的长度
实例:
var a = [1,2,3,4,5];
a.unshift('2','4');
console.log(a);
4.shift()
语法:array.shift()
功能:删除数组中第一个元素
返回值:删除的那个值
实例:
var a = [1,2,3,4,5];
a.shift();
console.log(a);
5.reverse() 方法用于颠倒数组中元素的顺序。(反转)
语法: arr.reverse()
返回值:返回一个数组,返回结果与原来的数组首尾颠倒,该方法会改变原来的数组,而不会创建新的数组。
实例:
var a = [1,2,3,4,5];
a.reverse();
console.log(a);
6.sort()排序
语法:arr.sort(function(a,b){ return a-b})升序排列
return b-a ,降序排列 改变原数组;所以直接输出原数组,就是排序后的数组
实例:
var b = [3,5,2,7,1]
b.sort();
console.log(a);
7.concat():合并
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法: arr.concat(arr1,arr2,......,arrn)
返回值:返回一个新的数组。,原数组不会被改变
实例:
var a = [1,2,3,4,5];
var b = [3,5,2,7,1];
console.log(a.concat(1,2));
8.slice() 方法数组的截取方法。
语法: arr.slice(start,end) 包含开始下标,不包含结束下标
start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
slice 支持负值,负值计数从后往前数;
slice(start):传一个参数表示从start位置开始截取到最后
slice():不传参数,表示截取整个数组
实例:
var a = [1,2,3,4,5,6];
console.log(a.slice(0,3));
9. indexOf() 方法可返回某个指定的值在数组中首次出现的位置。
语法:arr.indexOf(子字符串,开始查找的下标(可以省略))
说明:返回下标如果找到返回下标,如果没有找到匹配的字符串则返回 -1。
实例:
var a = [1,2,3,4,5,6];
console.log(a.indexOf(4));//3
10. join() 方法将数组转为字符串。
说明: 元素是通过指定的分隔符进行分隔的。
语法: arr.join(分隔符)
返回值:返回一个字符串。
var arr = [4,8,3,5]
console.log(arr.join()); //4,8,3,5 如果分隔符省略,则默认以逗号分隔
console.log(arr.join(" ")) //4 8 3 5; 如果有分隔符则以分隔符分隔
console.log(arr.join("")) //“4835”如果分隔符是空字符串,则输出一个字符串
console.log(arr.join("-")) //
11.lastIndexOf() 从后向前找
语法:arr.lastIndexOf(目标值(val),开始查找的位置(index));
功能:从index位置开始,向前查找val出现的位置;
返回值:如果找到,返回val的下标,如果找不到,返回-1;
说明:
1)lastIndexOf()不会改变原数组;
2)如果不传第二个参数,默认表示从最后一个下标开始向前查找
var arr = ['国','家','有','力','量','国'];
console.log(arr.lastIndexOf('国'));//5
//从最后一个下标的位置开始的向前查找的
console.log(arr.lastIndexOf('国',3));//0
//从下标3的位置开始向前查找的
console.log(arr.lastIndexOf('国家'));//-1
//从最后一个下标开始查找的
12.万能方法:splice()
1.删除功能
语法:arr.splice(index,num); //num表示删除的长度
功能:从下标index位置开始,删除num个元素;
返回值:被删除项组成的数组;
演示:
var color = ['red','blue','green','pink'];
var b = color.splice(1,2)
//从下标1的位置,删除两项,并将调用splice的返回值存在变量b中
console.log(b);//['blue','green']//将返回值输出, 将删除的内容放到一个数组中返回
console.log(color);//['red', 'pink']//改变原数组,将删除后剩余的内容输出
2.添加功能
语法:arr.splice(index,0,val1,val2..);
功能:在下标index位置,添加多个元素
返回值:空数组;[ ] 因为没有删除,所以数组为空
演示:
var color = ['red','blue','green','pink'];
console.log(color.splice(1,0,'#fff','#000'));//[]//从下标1开始,删除0个,然后添加两项。然后将返回值输出
console.log(color);//['red', '#fff', '#000', 'blue', 'green', 'pink']
3.替换功能
语法:arr.splice(index,num,val1,val2...)
功能:先删除后添加; 从index 位置开始,先删除num个元素,再添加多个新元素;
返回值:被删除项组成的数组;
演示:
var color = ['red','blue','green','pink'];
var c = color.splice(2,2,'上海')
console.log(color);//从下标2开始,删除2个,然后添加上一个上海
console.log(c);//['green', 'pink']