一、认识数组
1.数组的概念:
数组(array)是一个有序的数据集合。说白了,数组就是一组数。
数据是一组数据的集合,数组里面可以放任意的数据类型
二、数组的创建
1.通过字面量创建
var arr = [16,33,23,12,53];
这是定义数组最简单的方法,里面用逗号隔开了很多值,最后一项没有逗号
变量arr就是一个数组变量,里面存储的不是一个数字,而是一组数。可以使用下标,或称为索引值index来访问数组中的某一个项,下标从0开始。
console.log(arr[0]); //输出16
console.log(arr[1]); //输出33
console.log(arr[4]); //输出53
注意点:数组中保存的值不仅仅可以是数字,也可以使字符串、对象、数组、函数等复杂数据类型
2.通过构造函数创建
创建一个空数组
var arr = new Array();
创建指定项的数组
var arr = new Array(10); //创建一个长度为10的空数组
创建有具体内容的数组
var arr = new Array("张三","李四","王五");
注意:无特殊情况建议使用字面量创建数组
三、数组的属性
1.langth属性
length,英语是长度的意思,表示这个数组的项的个数
通过点方法可以调用数组的长度属性
var arr = [34,563,4576,334,46,433];
alert(arr.length); //6,数组里面一共有6项
2.数组的索引
数组的索引是从0开始计算的,通过[索引]可以获取
var arr = [34,563,4576,334,46,433];
arr[1];//此时表示的应该是563,并不是34
四、数组的操作方法
1.push()尾插:添加一项在数组的最后
//语法:数组.push("要添加的值") 1.会改变原本的数组;2.返回值是新添加的数组长度
var arr = ["张三","李四","王五"];
var res = arr.push("王小二");
console.log(arr); // 添加之后的原本数组
console.log(res); // 添加之后的数组的长度;
2.pop()尾删:删除数组的最后一项
//语法:数组.push("要添加的值") 1.会改变原本的数组;2.返回值是被删除的元素
var arr = ["张三","李四","王五"];
var res = arr.pop();
console.log(arr); // 添加之后的原本数组
console.log(res); // 返回被删除的元素;
//野路子做法
arr.length -= 1; //默认会删除最后一项
console.log(arr);//
3.unshift()头插:在第一项添加元素
//语法:数组.unshift("要添加的值") 1.会改变原本的数组;2.返回值是被删除的元素
var arr = ["张三","李四","王五"];
var res = arr.unshift("王小二");
console.log(arr); // 添加之后的原本数组
console.log(res); // 返回被删除的元素;
4.shift()头删:删除数组的第一项
//语法:数组.shift("要添加的值") 1.会改变原本的数组;2.返回值是被删除的元素
var arr = ["张三","李四","王五"];
var res = arr.shift();
console.log(arr); // 添加之后的原本数组
console.log(res); // 返回被删除的元素;
5.splice:在指定位置添加或者删除数组的元素
//语法:splice(要添加或者删除的索引值,要删除的个数,要添加的值)
//1.会改变原数组 2.返回值是删除的元素
//删除功能:第一个参数是要删除的索引值,第二个是删除的个数,删除不需要第三个参数
var arr = ['张三', '李四', '王五', '王小二'];
var res = arr.splice(1,1)
console.log(arr);// ['张三', '王五', '王小二']
console.log(res);// ["李四"]
//添加功能:第一个参数是要添加的索引位置,第二个参数是0,第三个是要添加的值
var arr = ['张三', '李四', '王五', '王小二'];
var res = arr.splice(1,0,"新的值")
console.log(arr);
console.log(res);//返回空数组,因为没有删除的值
//替换操作
var res = arr.splice(1,1,"新的值"); // 删除了索引是1的值 ,然后又添加了一个新值 ;
console.log(arr);
console.log(res);
6.reverse 反转数组
//语法:数组.reverse();1.原本的数组会被改变 2.返回值是被反转的数组
var arr = [1,2,3,4];
var res = arr.reverse();
console.log(res);
console.log(arr);
7.join:把数组通过特殊符号连接成字符串
//语法:数组.join("链接符号") 1.不会改变原数组 2.返还值是连接的新字符串
var arr = [1,2,3,4];
var res = arr.join("")
console(res); // 字符串"1234"
8.indexOf:会查找数组元素的索引
// 1.不会改变原本的数组 2.返还值就是查找元素的索引,如果没有查找到就会返还-1
var arr = ['张三','李四','王五'];
var res = arr.indexOf('李四');
console.log(res);
var arr = [1, 3, 60];
function has(arr, num) {
if (arr.indexOf(num) == -1) {
// 证明数组里没有num这个值
return false;
} else {
// 证明数组里有 num这个值
return true;
}
}
console.log( has(arr,6));
9.concat:把两个或者多个数组,连接成一个数组
语法 : 新生成的数组 = 数组1.concat(数组2,数组3,数组4);
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8];
var newarr = arr1.concat(arr2,arr3);
console.log(newarr);
10.sort:会把数组做成正序 或者倒叙排列:数字排列
//语法:arr.sort(function(a,b){return a-b })
// 1.不会改变原本数组 2. 返还值是排序号的数组 3. 如果是返还是a-b那么是正序
// 4.如果函数内返还是b-a 那么 新的数组是倒序 ;
var arr = [3,1,5,7,9];
var newarr = arr.sort(function(a,b){ // 回调函数 callback
// return a-b;
return b-a;
})
console.log(newarr);