数组概念
数组是一种数据类型,可以存储多个变量
数组的定义及内存区别
数组定义
构造方法
var arr=new Array(11,22,33,44);
所有的引用类型对象在创建时,必须开辟空间(new)
new是在堆上开辟空间的关键字
Array代表开辟的空间类
字面量
var arr=[1,2,3]
系统帮new
内置节本类型和引用类型在内存中存储的区别
内置类型在内存中只有一块栈空间,存储的就是数值
引用类型在内存中有两块空间,一块是栈空间,存储的是堆空间的地址,一块是new出来的堆空间,存储的是真正的数值
数组元素的访问
数组名[下标]
下标是元素的索引
数组对象.length
注意事项
1-从0开始
2-下标必须为自然数
3-每两个索引之间相差1
4-下标可以为变量
5-下标千万不要越界 0~数组长度-1
数组的遍历
对数组的所有元素做相同的操作
依赖于循环实现
遍历打印和遍历追加打印
数组相关API
1-功能
2-参数
3-返回值
具体API
reverse
反转数组中元素的顺序,且会改变元素组
无参
反转后的数组
push(尾插)
向数组末尾添加若干元素
push(参数1,[参数2,参数3......])
新数组的长度
pop(尾删)
尾删
无参
被删除的元素
unshift(头插)
头插
unshift(参数1, [参数2, 参数3...])
新数组的长度
shift(头删)
头删
无参
被删除的元素
splice
数组删除且替换
splice(初始位置,偏移量,[参数1,参数2,.......])
被删除的元素
slice
截取数组区间
slice(起始位置,结束位置):左闭右开 [初始位置,结束为止)
被截取的区间
concat
数组的拼接,不会改变原数组
concat(新数组)
新拼接的数组
join
将数组转为字符串
join([分隔符号])==========默认逗号分隔
转换的字符串
多维数组
一个数组中的元素,依然是数组
多维数组是由一维数组嵌套实现的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
<script>
var arr = [
[1, 2], //arr[0][0]
[3, 4, 5],
[6, 7, 8, 9]
]
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
document.write(arr[i][j] + "");
}
document.write('<br>');
}
</script>
冒泡排序
核心思想:两两比较
外层循环比较的趟数:N-1
内层循环比较的次数:N-1-i(趟数)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
<script>
var arr = [4, 5, 3, 8, 6, 7, 2, 9, 1, 0];
n = arr.length;
function bubbleSort(arr) {
var t = 0;
for (var i = 0; i < n - 1; i++) {
for (var j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
}
bubbleSort(arr);
console.log(arr);
</script>