//push pop shift unshift reverse sort splice会改变原数组 //concat slice join 不会改变原数组
排序方法
reverse() 反转:
1.将数组元素全倒过来
2.会影响之前的数组 没有参数
3.返回值为倒转过来的数组 strArr和arr 两个其实指向的是一个变量 所以操作 strArr会影响arr 操作arr也会影响strArr
var arr = ['a','b','c','d'] var strArr = arr.reverse()//反转 将数组元素全倒过来 console.log(strArr); console.log(arr)//这里的arr和strArr指向一个地址 改变都会改变 console.log(strArr == arr)//true console.log(strArr === arr)//true
sort () 排序: 重点
1.默认(无参的方式)为从小到大默认排序方式是根据ascii码 如果是数值会自动转换为string 只取第一位 返回值为排序好的数组
2.指定比较的方法进行比较 里面可以指定参数 参数是一个function 这个里面有两个参数 a和b 如果返回a-b 为1 就是正序 相反如果返回b-a 就是 -1 那就是倒序
var arr1 = [10,9,11,22,1] arr1.sort()//默认 console.log(arr1); arr1.sort(function(a,b){ return a-b //返回的是1 1就是正序 a-b }) console.log(arr1) arr1.sort(function(a,b){ return b-a //返回的是-1 -1就是倒序 b-a }) console.log(arr1)
连接和截取方法
连接方法
1.concat 进行数组合并 对应的返回值为一个新的数组 不改变原本的数组
2.传入的参数 是一个数组 也可以是单个元素 连接到后面
arr.concat()
截取方法
1.slice截取对应数组的某一段内容组成一个新的数组 返回的是一个新的数组
2.不会改变原本数组 参数为开始下标和结束下标(不包含结束的下标/包含开始的下标)
console.log(arr1.slice(arr1.length-1,arr1.length))//截取最后一个
长度和下标的关系 长度-1等于最后一个下标
join连接
1.连接成字符串 返回值为string
2.不会影响原本的数组
var arr = [1,2,3] var str = arr.join()//默认以,分割 arr.join() == arr.join(',') console.log(str); var str1 = arr.join('/')//('')没有 console.log(str1)
splice
删除
1.两个参数 第一个是开始下标 第二个是个数(可以省略 就是删到最后)
2.会改变之前的数组 返回的是一个新的数组(删除后的元素组成的)
将删除位置的数据替换
1.先删除然后用逗号加入替换的元素
总结
1.如果是一个参数 那么就是从这个指定的参数下标删到结束
2.如果是2个参数 那么就是从指定的参数下标位置 删对应的指定个数
3.如果是三个参数 或者以上的参数 那么就是从指定的参数下标位置 删对应的指定个数 再将后面的数据填入对应的删除位置
4.如果第二个参数为0 那么返回的是一个空数组 不删除 单纯的将对应的数据插入到指定的下标
5.会改变原数组,返回的是删除元素组成的数组
查找方法
indexof找的是第一次出现的位置 默认从下标0开始找,没有找到返回-1
根据对应的值找下标 找到了返回对应第一次出现的下标 找不到返回-1
两个参 第一个是要找的值 第二个是从那个下标开始找
lastIndexof 从后往前找
默认第二个参数是最后一个下标
排序算法
排序算法是属于数据结构的知识点 一般常见的排序有10种
冒泡排序 逐个冒泡到上面去(类似可乐)
1.逐层冒泡 第一次执行的冒泡执行比较次数为当前长度-1
2.冒泡的总次数为长度-1
3.j和j+1比 比较完进行位置交换
4.冒泡的比较次数一次比一次少 最后到达一次结束
var arr = [1, 3, 8, 5, 7, 6, 2]; function bubbleSort(array) { for (var i = 1; i < array.length; i++) { 从一开始就是length-1次 = 小于length //一共需要冒泡多少次 for (var j = 0; j < array.length - i; j++) { //要比较多少次 if (array[j] > array[j + 1]) { //排序 是否换位 var temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } bubbleSort(arr); console.log(arr);
选择
1.每次选择当前的第一个数为最小值(或最大值)
2.这个值跟后面的所有去比较 然后对应的比我这个值还小的 把下标记录起来 将这个下标赋值给min
3.判断min是否是我前面给到的值 如果是不做操作 如果不是交换位置
var arr = [1, 3, 8, 5, 7, 6, 2]; function selectorSort(array) { for (var i = 0; i < array.length - 1; i++) {//从下标0开始设最小 一共length-1次 从0开始就是小于length-1 min = i;//设为最小的 for (var j = i + 1; j < array.length; j++) { //和前面一位比 每次比到最后一位 if (array[min] > array[j]) { min = j; } } if (min != i) { var temp = array[min]; array[min] = array[i]; array[i] = temp; } } }
插入
快速排序(冒泡升级)
//希尔排序(插入排序升级)