数组
数组就是一系列有序数据的集合
1、数组中每个值,称之为一个“数组元素”;
2、数组元素可以是任意类型的数据(数字、字符串、对象)
创建数组
1、使用new关键字和Array()来创建一个数组(了解)
构造函数方式
var arr = new Array(元素1,元素2,元素3,.....,元素N);
例:创建一个包含五个元素的数组
var arr1 = new Array('乌蝇哥',32,'man','china','打我呀打我呀');
2、使用中括号[]来创建数组
字面量形式
var arr = [元素1,元素2,元素3,...,元素N];`
例:创建数组有五个元素
// 元素之间使用','隔开
var arr2 = ['梁非凡',28,'man,'china','下属不可以啵上司嘴'];
注意
1、new 和 Array关键字,Array 首字母大写
2、数组元素可以写多个,多个之间用逗号隔开“,”
3、var arr = new Array[]; 错误的写法
数组索引
1、数组每个元素都对应一个“编码”,通过这个“编号”可以获取指定元素的值.
2、数组元素对应的“编号”,通常称之为“数组下标”或“数组索引”.
3、数组元素下标从0开始.
数组的赋值方式及调用方式
调用
直接使用数组名+下标的方式调用
赋值
1.静态赋值:直接使用指定的值给指定位置的数组
arr[0] = 1;
arr[1] = "嘿,靓仔";
2.动态赋值:在程序运行过程中,创建具体的值给元素赋值
var name='张三';
var age =18;
arr[0] = name;
arr[1] = age;
遍历数组
指对一个数组中的所有数据进行操作
例:求出一个数组的和
var sum =0;
for(var i=0;i<arr.length;i++){
// 循环输出所有的元素
//让数组的每一个元素相加
sum+=arr[i];
}
console.log(sum);
数组对象中的属性和方法
在JavaScript中,数组是一种对象,带有自己的方法和属性,下面列举一些常用的方法
属性名 | 描述 |
---|---|
length | 获取数组元素长度,如:arr.length 注:最大下标值,数组长度-1 |
方法名 | 描述 |
---|---|
arr.slice(start,end) | 分割数组,返回arr中start到end之间的元素 |
arr.join(str); | 将数组划分为字符串,数组元素以str分隔(默认是逗号) |
arr.sort(); | 给数组排序,先数字后英文再中文 |
arr.reverse();ruiwosi | 反转数组元素 |
arr.concat(); | 合并数组,可以是多个,多个之间用逗号隔开“,” |
arr.push(data); | 给arr数组最后添加一个data元素,返回新数组的长度 |
arr.pop(); | 弹出arr数组最后一个元素,返回弹出的元素值 |
arr.shift() | 弹出arr数组第一个元素,并反弹出的元素值 |
arr.unshift(data); | 给arr数组最前面添加一个data元素,返回新数组的长度 |
注意各种方法的返回值及注意该方法是否会改变原数组
多维数组
数组中的元素依然可以是数组,我们称这样的数组为多维数组,一般情况只会使用2层或3层,例如:
var arr = [
元素1,
[元素1,元素2,元素3],
元素3,
元素4
]
多维数组的赋值方式及调用方式
// 创建一个二维数组
var arr = [
1,
["嘿嘿",2,3,4,5],
[8,2,3,4,5],
4,
5
];
//取出二维数组的“嘿嘿”
var a = arr[1][0];
for-in循环
在使用for遍历数组的过程中,需要至少确定数组的长度,以判断遍历的次数
但如果遇到数组的元素个数不确定的情况,就不适合使用for循环遍历了
解决办法:
新的遍历方式:for-in循环
例1: 使用for-in循环数组
// n表示是数组的索引
var arr = [1,1,2,3,5,8,13,21,34];
for(var n in arr){
console.log(arr[n]);
}
例2:使用for-in循环对象
for-in循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
var obj = {
name:"lz",
age:36
}
for(var i in obj){
console.log(obj[i]);
}
在ES5中增加了新的对象方法,下面列出一些新的常用方法
1、indexOf
//arr.indexOf(item,start);
//item必须。查找的元素。start可选的整数参数。规定在数组中开始检索的位置
var arr = ["a","b","c","d","e"];
arr.indexOf("a");
2、forEach
//array.forEach(function(currentValue, index, arr));
// currentValue: 必需。当前元素. index:可选。当前元素的索引值。arr:可选。当前元素所属的数组对象。
//遍历数组
var arr = ["a","b",255,512,"hello"];
var a = arr.forEach(function(value,index){
console.log(value);
console.log(index);
})
console.log(a);
3、map
//array.map(function(currentValue,index,arr))
// map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值,方法按照原始数组元素顺序依次处理元素。 输入参数和forEach相似,但是map会返回一个新数组。
//例:将arr2 = [4,5,6,7,8]乘以1.3后返回
var arr2 = [4,5,6,7,8]
var b = arr2.map(function(value,index){
return value+value*0.3;
})
console.log(arr2)
console.log(b)
4、filter
//array.filter(function(currentValue,index,arr))
// filter() 方法创建一个新的数组,是将函数执行一遍,只有在布尔值为true的时候才会返回该数据, 输入参数和forEach相似。
//例:返回 arr2 = [4,5,6,7,8]大于5的数据
var c = arr2.filter(function(value,index){
return value <= 5
})
console.log(c)