数组的定义:
存储数据的一个盒子,就向数学中的集合;
数组为引用类型
注:内置的基本类型:
number,string,boolean,undefined,null
引用的类型:
object
内置类型与引用类型的区别:
内置类型:只有一块空间,在栈区,该空间直接保存着变量的数值
引用类型:有两块空间,一块栈空间,存储new堆空间的地址
一块堆空间,存储真正的数据
构造方法:
1构造方法
var arr = new Aeeay(1,2,3,4,5);
new:在堆内存开辟空间的关键字
Array:数组数据类型
2字面量(正常)
var arr1 = [1,2,3,4,5];
数组元素的访问:
语法:数组名[下标]
下标取值范围:0——元素个数-1
下标可以为变量
例如:
var arr = [1,2,3,4,5,6,7,8]
var n = 3;
console.log(arr[3]);(表示打印的是arr数组中的第4个元素)
注意事项:千万不要越界访问,例如:console.log(arr[99999]);
数组的遍历:
遍历:对数组的全部元素执行某种相同的操作;
例如:我们要打印数组内所有的元素:
arr = [1,2,3,4,5,6,7,8,9]
for (var i=0;i<arr.length-1;i++){
console.log(arr[i])
}
数组的逆序
就是将数组的数字颠倒;
程序=算法+语法
算法:先用中文描述问题的解法,然后再翻译为js
语言
var arr = [1,2,4,5,6,7,8,9,1,0];
var t = 0;
for (var i = 0; i<arr.length/2;i++){
t = arr[i];
arr[i] =arr[arr.length-1-i];
arr[arr.length-1-i] = t;
}
for (var i =0;i<arr.length;i++){
console.log(arr[i]);
}
数组的函数:
函数的学习思想:
设计思想:将思想放在用户的角度上
1函数的功能
2函数的参数
3函数的返回值
4 抄案例,无耻求demo
push
:尾插函数
功能:向数组的末尾添加一个或多个元素(至少一个)
参数:.push(x1,[x2,x3,...xn])
;习惯将可有可无的元素放在[ ]里面;
返回值:返回新数组的长度;
var arr = [1,2,4,5,6,7,8,9,1,0];
var arr1 = arr.push('heihei','haha');
console.log(arr1);
解释:原数组的长度为10,尾插两个元素,则数组的返回值为12
pop
:尾删函数
功能:删除数组的最后一个元素
参数:无
返回值:返回被删除的那个元素
var arr = [1,2,4,5,6,7,8,9,1,0];
var arr1 = arr.pop();
console.log(arr1);
删除了最后一个元素0.并返回了最后一个元素0;
unshift
:头插函数
功能:向数组的开头添加一个或多个元素
参数:unshift(x1,[x2,x3,...xn])
;
返回值:返回新数组的长度;
var arr = [1,2,4,5,6,7,8,9,1,0];
var arr1 = arr.unshift(3,4,5);
console.log(arr1);
原数组的长度是10,添加3个元素之后,数组的返回值是13(返回的是数组的长度)
shift
:头删函数
功能:把数组的第一个元素从其中删除
参数:无
返回值:返回被删除的第一个元素;
var arr = [1,2,4,5,6,7,8,9,1,0];
var arr1 = arr.shift();
console.log(arr1);
数组的第一个元素是1,使用了shift之后,删除的是1,返回的也是1
reverse
:逆序函数
功能:逆序
参数:无
返回值:无
var arr = [1,2,4,5,6,7,8,9,1,0];
var arr1 = arr.reverse();
console.log(arr1);
splice
:删除指定元素,并且可以用新的元素代替
功能:删除指定元素且用新的元素替代
参数:splice(起始位置,偏移量,[替换的元素])
返回值:被删除的元素;其实就是一个数组
新数组有几个元素,他的长度就是元素个数-1
var arr = [1,2,4,5,6,7,8,9,1,0];
var arr1 = arr.splice(2,5,3);
console.log(arr1,arr);
从第下标为2,也就是第3个元素开始,删除5个元素,然后再增加一个元素,最后的返回值为被删除的5个数字组成的数组
arr:为被删除5个元素,之后的数组再加新增的元素组成的数组;
concat:
数组的拼接
功能:数组的拼接
参数:concat
(数组)
返回值:新数组
var arr = [1,2,3]
var arr1 = [4,5,6]
var arr2 = arr.concat(arr1)
console.log(arr2);
两个数组拼接,把所有的元素写在一个数组里面
join
:转化成字符串
功能:把数组中的所有元素放入一个字符串
参数:([字符串分隔符]),默认分隔符为逗号;
返回值:被分割的字符串;
var arr = [1,2,3,4,5,6];
var arra = arr.join('*')
console.log(arra);
slice
:截取
功能:数组元素的截取
参数:slice(起始位置,结束为止)[左闭右开)
返回值:被截取的数组
var arr = [1,2,3,4,5,6,6,7]
var arr1 = arr.slice(2,4)
console.log(arr1,arr);
(2,4)表示的是从下标为2的元素开始,到下标为4 的元素,但不包括下标为4的那个元素
返回值为截取的那个几个元素组成的数组;
原数组并未发生改变
sort
:排序
用于对数组进行排序(只能由大到小)
多维数组(了解)
js实际是没有多维数组的概念;
所谓的多维数组,实际是通过一维数组的嵌套实现的;
多维数组最常见的是二维数组;
数组排序:
冒泡排序:
冒泡排序:两两比较,每趟找出最大或者最小的一个数值;
趟数:N-1;
次数:N-i(第几趟)-1;
var arr = [5,6,7,8,9,2,0,1];
var t;
// 趟数
for (i=0;i<arr.length-1;i++){
// 次数
for (j=0;j<arr.length-1-i;j++){
// 如果前一个数字大于后面一个数字,则进行交换,大数朝后走
if (arr[j]>arr[j+1]){
t = arr[j];
arr[j]= arr[j+1];
arr[j+1] = t;
}
}
}
console.log(arr)