js - 数组

116 阅读4分钟

概念

数组概念: 数组也是object数据类型的一种,也是一种比较复杂的数据 一个大空间存储多个小空间

跟{}定义的对象区别: ①object中的数据没有顺序,数组中的数据是有顺序的

数组是计算机内存中一段连续的有顺序的空间,是使用一个变量来表示了

数组定义

var arr = []
var arr = new Array
var arr = [数据,数据,..]
var arr = new Array(数据,数据,...)

①如果使用[]的定义,放入一个数字,表示当前数组中只有一个小空间,其中放了这个数字,如果使用new Array(数字),表示当前数组中有 数字 个空的小空间

②数组的第一个元素的下标永远是0

③数组的最后一个元素的下标永远是 数组.length-1

④求数组长度>数组.length

数组的操作

①获取数组数据> 数组[下标]

②设置数据> 数组[下标] = 值 (当下标存在了,就是修改数据,下标不存在,就是添加,如果下标很大,会创建很多空的小空间)

③删除数据:<1>delete 数组[下标]; <2>数组.length = 值

数组的遍历

①循环语法遍历

②使用for in 也可以遍历,但是建议使用 i = 0 的for循环

数组练习

根据数据渲染页面

数组嵌套

数组中数据的类型是没有要求的,所以数组中可以嵌套数组 =>获取值:数组[下标][下标]

数组的基础类型和引用类型

<1>基础类型/简单类型:

①包含的数据:number/string/boolean/undefined/null

②存储 =>将值存在栈中

③赋值 => 将值复制一份给另一个变量

④全等比较 =>比较类型和值

<2>引用类型/复杂类型:

①包含的数据:{}/[]/function

②存储 => 将值存在堆中,将堆的地址存在栈中

③赋值 => 将栈中的地址复制一份给另一个变量 => 两个变量共用一个值的地址,改变一个,;另一个也会发生改变

④全等比较 => 比较栈中的内存地址是否一致

注意

①一旦碰到赋值操作,特别的注意一下,是否是引用类型赋值

②实参给形参赋值,也要小心是否是引用类型的赋值

③return出来的数据赋值给一个变量的时候,也要小心是否return了一个引用数据类型

数组的方法

unshift =>给数组开头添加一个或多个元素: 数组.unshift(一个或多个元素) =>返回数组的长度 ,改变原数组
shift => 将数组第一个元素删除: 数组.shift() => 返回被删除的元素,改变原数组
push => 给数组末尾添加一个或多个元素: 数组.push(1个或多个元素) =>返回新数组的长度,改变原数组
pop =>将数组最后一个元素删除: 数组.pop() => 返回被删除的元素,改变原数组
splice => 对数组做增 删 改的操作:数组.splice(开始下标,删除个数,要填充的1个或多个元素) =>返回被删除的数组,改变原数组
reverse => 翻转数组: 数组.reverse() =>不需要返回值,改变原数组
concat => 将1个或多个值或1个数组或多个数组合跟当前数组并成一个更大的数组: 数组.concat(1个或多个值 或1个数组或多个数组) =>返回更大的数组
sort => 对数组进行排序:①数组.sort();②数组.sort(function(a,b){return a-b/b-a});不需要返回值,改变原数组
jion => 使用指定的连接符将数组所有元素连接成一个字符串: 数组.jion(连接符) ,返回字符串
slice => 截取数组: 数组.slice(开始下标,结束下标) =>返回截取出来的数组片段组成新的数组,结果不包含结束下标对应的元素

排序算法

冒泡排序

for(var i=0;i<arr.length-1;i++){
    for(var j=0;j<arr.length-1-i;j++){
      if(arr[j]>arr[j+1]){
        var tmp = arr[j]
        arr[j] = arr[j+1]
        arr[j+1] = tmp
        }
    }
}

每相邻的两个元素比较大小,排列出合适的顺序

选择排序

for(var i=0;i<arr.length-1;i++){
   for(var j=i+1;j<arr.length;j++){
     if(arr[i]>arr[j]){
       var tmp = arr[i]
       arr[i] = arr[j]
       arr[j] = tmp
     }
   } 
}

找最大值或最小值排列在合适的位置,得到新的顺序