就是一个存储数据的空间,里面会把你存储进去的所有数据
都按照顺序依次排好,每一个数据给一个编号(索引 / 下标)
编号从 0 开始
创建空数组:var arr = [ ]
创建一个带有数据的数组:var arr = [数据1, 数据2, 数据3, 数据4, …]
var arr = [100, 200, true, 'hello world', function () {}] console.log(arr) // [100, 200, true, "hello world", ƒ]创建空数组:var arr = new Array( )
创建一个包含多个内容的数组:var arr = new Array(数据1, 数据2, 数据3, …)
var arr = new Array(300, 400, false, '你好 世界') console.log(arr) // [300, 400, false, "你好 世界"] 创建一个包含一个内容的数组:var arr = new Array(数据1但不能是数字) var arr = new Array('nihao') console.log(arr) // ["nihao"] 创建一个指定长度、没有内容的数组:var arr = new Array(数字表示长度) var arr2 = new Array(20) console.log(arr2) // [empty × 20]索引:就是数组里面每一个数据的“编号”,从0开始递增,是一个读写的属性
表示数组的长度,也就是数组里面有多少个数据,是一个动态的属性,可以读,也可以设置(写)
语法:for ( var i in 数组 ) { 重复执行的代码 }
i:是数组的索引in:在 … 里数组:就是你要遍历的数组{ } :是重复执行的代码 会根据数组中有多少个成员执行多少次语法:for ( var value of 数组 ) { 重复执行的代码 }
value:是数组里面的值of:在 … 里数组:就是你要遍历的数组{ } :是重复执行的代码 会根据数组中有多少个成员执行多少次作用:向数组的后面追加数据
语法:数组.push(你要追加的数据1, 你要追加的数据2, …)
返回值:追加完毕以后,数组的长度
var arr = ['hello', 'world', '你好', '世界'] var res = arr.push(100, 200, true) console.log('返回值是 : ' + res) // 返回值是:7 console.log(arr) // ["hello", "world", "你好", "世界", 100, 200, true]作用:删除数组的最后一个数据
语法:数组pop( )
返回值:被删除的那个数据
var arr = ['hello', 'world', '你好', '世界'] var res = arr.pop() console.log('返回值是 : ' + res) // 返回值是 : 世界 console.log(arr) // ["hello", "world", "你好"]作用:向数组最前面添加数据
语法:数组.unshift(你要添加的数据1, 你要添加的数据2, …)
返回值:添加完毕以后,数组的长度
var arr = ['hello', 'world', '你好', '世界'] var res = arr.unshift(100, 200, false) console.log('返回值是 : ' + res) // 返回值是 : 7 console.log(arr) // [100, 200, false, "hello", "world", "你好", "世界"]作用:删除数组的最前面一个数据
语法:数字.shift( )
返回值:被删除的那个数据
var arr = ['hello', 'world', '你好', '世界'] var res = arr.shift() console.log('返回值是 : ' + res) // 返回值是 : hello console.log(arr) // ["world", "你好", "世界"]作用:是反转数组
语法:数组.reverse( )
返回值:反转后的数组
var arr = ['hello', 'world', '你好', '世界'] var res = arr.reverse() console.log('返回值是 : ' , res) // 返回值是:["世界", "你好", "world", "hello"] console.log(arr) // ["世界", "你好", "world", "hello"]作用:给数组进行排序
语法:
语法1:数组.sort( ) --> 按照一位一位来进行升序排序语法2: 数组.sort(function (a, b) { return a - b }) --> 数值从小到大排序数组.sort(function (a, b) { return b - a }) --> 数值从大到小排序返回值:排序好的数组
var arr = [1, 5, 2, 8, 11, 22, 13, 54, 32, 7, 6, 21, 9] var res = arr.sort() console.log(res) // [1, 11, 13, 2, 21, 22, 32, 5, 54, 6, 7, 8, 9] console.log(arr) // [1, 11, 13, 2, 21, 22, 32, 5, 54, 6, 7, 8, 9] var arr = [1, 5, 2, 8, 11, 22, 13, 54, 32, 7, 6, 21, 9] var res = arr.sort(function (a, b) { return a - b }) console.log(res) // [1, 2, 5, 6, 7, 8, 9, 11, 13, 21, 22, 32, 54] console.log(arr) // [1, 2, 5, 6, 7, 8, 9, 11, 13, 21, 22, 32, 54] var arr = [1, 5, 2, 8, 11, 22, 13, 54, 32, 7, 6, 21, 9] var res = arr.sort(function (a, b) { return b - a }) console.log(res) // [54, 32, 22, 21, 13, 11, 9, 8, 7, 6, 5, 2, 1] console.log(arr) // [54, 32, 22, 21, 13, 11, 9, 8, 7, 6, 5, 2, 1]作用:
作用1:截取数组作用2:截取数组以后,在截取位置替换新的内容语法:
语法1:数组.splice(从哪个索引开始, 截取多少个)
语法2:数组.splice(从那个索引开始, 截取多少个数据, 你要填充的数据1, 你要填充的数据2, …)
返回值:被截取出来的内容(返回值一定是一个数组)
不管你截取多少个数据,返回的数组里面就有多少个被截取出来的数据如果你一个都不删除,返回的就是一个空数组 var arr = ['hello', 'world', '你好', '世界'] var res = arr.splice(2, 0) console.log(res) // [] console.log(arr) // ["hello", "world", "你好", "世界"] var arr = ['hello', 'world', '你好', '世界'] var res = arr.splice(1, 1, '新来的', '新来的2', '新来的3') console.log(res) // ["world"] console.log(arr) // ["hello", "新来的", "新来的2", "新来的3", "你好", "世界"] var arr = ['hello', 'world', '你好', '世界'] var res = arr.splice(1, 2, '新来的', '新来的2', '新来的3') console.log(res) // ["world", "你好"] console.log(arr) // ["hello", "新来的", "新来的2", "新来的3", "世界"] var arr = ['hello', 'world', '你好', '世界'] var res = arr.splice(1, 0, '新来的', '新来的2', '新来的3') console.log(res) // [] console.log(arr) // ["hello", "新来的", "新来的2", "新来的3", "world", "你好", "世界"]作用:在不改变(影响)原始数组的基础上,从数组里面提取出来一段内容
语法:
语法1:数组.slice(从哪一个索引开始, 到哪一个索引结束) - 包前不包后语法2:数组.slice(从哪一个索引开始, 负整数) - 包前不包后 注:负整数 等价于 (数组的length + 负整数) 语法3:数组.slice(从哪一个索引开始) 注:表示从哪个索引开始,提取出后面所有的内容返回值:你提取出来的数据(一定是一个数组)
如果你有提取数据, 那么数组里面就是你提取的数据如果你没有提取数据, 那么数组里面就是空数组 var arr = ['hello', 'world', '你好', '世界'] var res = arr.slice(1, 3) // 表示从索引1开始, 到索引3结束(不包含索引3) console.log(res) // ["world", "你好"] console.log(arr) // ["hello", "world", "你好", "世界"] var arr = ['hello', 'world', '你好', '世界'] var res = arr.slice(1, -1) // 表示从索引 1 开始, 到索引 3 结束(不包含索引3) // 写的是 -1 等价于 4 + -1 === 3 // 和你写 arr.slice(1, 3) 是一摸一样的 console.log(res) // ["world", "你好"] console.log(arr) // ["hello", "world", "你好", "世界"] var arr = ['hello', 'world', '你好', '世界'] var res = arr.slice(1) // 表示从索引 1 开始, 到最后结束(包含最后一个) console.log(res) // ["world", "你好", "世界"] console.log(arr) // ["hello", "world", "你好", "世界"]作用:就是把多个数组连接在一起,变成一个新的数组,不影响原始数组
语法:数组.concat(你要连接的数据或者数组1, 你要连接的数据或者数组2, …)
返回值:把所有的参数都连接到第一个数组身上,返回一个连接好的新数组
var arr = ['hello', 'world', '你好', '世界'] var res = arr.concat([1, 2, 3], [4, 5, 6], true, false, 100, 200) console.log(res) // ["hello", "world", "你好", "世界", 1, 2, 3, 4, 5, 6, true, false, 100, 200] console.log(arr) // ["hello", "world", "你好", "世界"]作用:是把数组里面的每一个数据组合起来,变成一个字符串
语法:数组.join(‘你要连接每一个数据的连接内容’)
注:如果你不传递参数,默认使用**逗号(,)**进行连接返回值:一定是一个字符串
var arr = [1,2,3,4,5,6] var res = arr.join(' + ') console.log(res) // 1 + 2 + 3 + 4 + 5 + 6 console.log(arr) // [1, 2, 3, 4, 5, 6] var arr = ['h', 'e', 'l', 'l', 'o'] var res = arr.join('+') console.log(res) // h+e+l+l+o console.log(arr) // ["h", "e", "l", "l", "o"]表格的行数由数组的长度(外面大数组的长度)决定
表格的列数由每一条数据的长度(里面小数组的长度)决定
就是大数下沉
冒泡排序 - 是我们若干排序算法中最基础的一种
一个一个的进行比较后变量相交换
先循环一遍,让每一个数字和后一个数字进行比较
如果前一个比后一个大,那么两个数字交换位置,否则不动
循环完毕得到的结果,就是最大的数字放到了数组的最后一位
循环一次能把最大的数放在最后面
一模一样的代码重复执行第二遍的时候,就把倒数第二大的数放到倒数第二大的位置一模一样的代码重复执行第三遍的时候,就把倒数第三大的数放到倒数第三大的位置一模一样的代码重复执行第n遍的时候,就把倒数第n大的数放到倒数第n大的位置选择排序也是排序基础算法的一种
一个和所有的分别进行比较,之后变量相交换
假设索引 0 是最大的
循环一次数组,找到最大的那个数字的索引
让最大的数字的索引和我们假设的最大的索引交换位置
例:var arr = [5, 3, 7, 2, 1, 4, 6, 9, 8]
假设索引 0 是最大的数字遍历数组的时候,发现最大的数字索引为 7那么我们就让索引为 0 和 7 位置的数字交换
循环第二次,不需要管索引为 0 的数字了 假设索引为 1 的数是最大的数字遍历数组的时候,找到比索引为 1 的数还要大的数字那么就让这个更大的数字和索引为 1 的数交换位置 … /* 我们确定好了 重复的代码执行 8 遍 第 n 遍 假设索引 循环开始 和谁交换 1 0 1 0 2 1 2 1 3 2 3 2 4 3 4 3 5 4 5 4 6 5 6 5 7 6 7 6 8 7 8 7 j j - 1 j j - 1 */实际是复制内容
全局变量和里面的局部变量互相独立
基本数据类型属于值传递,本质就是一个简单的复制
引用数据类型属于引用传递,本质就是共享地址