数组的方法

//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;
          }
        }
      }

插入

快速排序(冒泡升级)

//希尔排序(插入排序升级)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值