文章目录
前言
JS的数据结构虽然和其他编程语言一样 都有链表 栈 二叉树 等结构,但是底层只存在数组一个存储结构,而其他的数据结构都是由数组搭配自己写或者底层已经实现的API去组合构成其他数据结构。
所以学好JS的数组结构,对于掌握JS的所有其他数据结构也至关重要。
一、数组是什么?
<title>数组</title>
<script type="text/javascript">
//数组array -数组显然是一个对象,也是用来存储一些值的
//不同的是普通对象是使用字符串来作为属性名的,而数组是使用数字作为索引(index)操作元素。
//数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储数据
var arr = new Array();
console.log(arr);
console.log(typeof arr);
//接下来向数组中添加元素
arr[0] = 10;
console.log(arr);
arr[1] = 20 ;
console.log(arr[1]);
console.log(arr[3]);//读取不存在的不报错 返回undefined、
//如何获取数组的长度?
console.log(arr.length);//对于连续的数组 使用length可以获取长度。
//对于非连续的数组 会返回最大的数值+1的数量。
arr[9] = 90 ;
console.log(arr);//虽然其他的没用上 但仍然为长度开辟了空间,占用内存 故尽量不使用非连续的数组。
arr.length = 3;
console.log(arr);//修改的长度小于原长,多出的元素会被删除。 大于原长 会开辟空的空间。
//使用下面这个式子可以始终向数组的最后一位添加一个数值
arr[arr.length] = 70 ;
console.log(arr);
arr[arr.length] = 80 ;
console.log(arr);
arr[arr.length] = 90 ;
console.log(arr);
</script>
1.1数组字面量创建数组方式:
<title></title>
<script type="text/javascript">
//创建一个数组
var arr = new Array ();
arr[0] = 123;
arr.hello = "abc";
//和创建对象一样 可以使用创建字面量的方式来创建数组 可以在创建时就指定数组中的元素
var arr = [1,23,44,5,66,777];
//等价于下面的式子
var arr2 = new Array (1,23,44,5,66,777);
console.log(arr);
console.log(arr2);
console.log(arr == arr2 );
//下面只传一个整数值的时候二者有区别
arr = [10];//向数组arr里面传入一个数值 令arr[0]=10
arr2 = new Array(10);//申请一个10个位置的空数组 没有赋值
console.log(arr);
console.log(arr2);
console.log(arr2.length);
//注意数组中的元素可以是任意的数据类型
arr3 = ["hello",1,true,null,undefined];
console.log(arr3);
//当然也可以是一个对象、函数等
var obj1 = {name:"mqy"};
arr3[arr3.length] = obj1 ;
console.log(arr3);
console.log(arr3[5]);
console.log(arr3[5].name);
//也可以让每个元素是一个数组
arr4 = [[1,2,3],[2,3,4],[3,4,5],[4,5,6]];
console.log(arr4[1]);
console.log(arr4[2][2]);//第三个元素指向的数组里的第三个元素。
</script>
二、数组常用方法
2.1、四个操作移动数组元素方法——pop push shift unshift
<title>数组常用的四个方法</title>
<script type="text/javascript">
//先创建一个数组
var arr = ["mqy","pzk","wxy"];
//push方法:向数组的末尾添加一个或多个元素,并返回数组的新的长度。
//可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾。
arr.push("hc","yyy");
console.log(arr);
var result = arr.push("xx","hzl");
console.log("result = "+result);//可见该方法将数组添加后的新的数组长度作为返回值传递。
//pop方法 删除数组的最后一个元素
console.log(arr);
var result2 = arr.pop();//再来看看返回值是
console.log(arr);
console.log(result2);//可以看到将删除掉的值作为返回值传递。
//unshift 向数组的开头添加一个或多个元素 并返回新的数组长度
arr.unshift("zxr");
console.log(arr);
arr.unshift("fy","wsl");
console.log(arr);
var result3 = arr.unshift("ddw");
console.log(result3);
//shift 可以删除数组的第一个元素 并将删除的元素作为返回值返回 此处不做演示。
</script>
2.2 遍历数组
<title></title>
<script ty