JavaScript数组的操作方法、冒泡排序、数组去重(4种)的方法

1、使用 “at” 获取最后一个元素、//这是新增属性

如:arr.at(-1):获取最后一个数据

2、数组的操作方法

破坏性方法

①push:在数组的末尾添加一个元素或者多个元素,并返回数组的新长度

②unshift():在数组的开头添加一个元素或者多个元素,并返回数组的新长度

let arr = ['a', 'b', 'c']
        arr.push('d')
        console.log(arr);
        console.log(arr.push());//返回值
​
        arr.unshift('A')
        console.log(arr);
        console.log(arr.unshift());//返回值

③pop():删除数组的最后一个元素,返回值的被删除的元素

④shift():删除数组的第一个元素,返回值的被删除的元素

⑤splice(第一个开始删除的位置,删除的元素个数) :第二个参数不写表示从第一个参数下标开始删除后面的所有元素,返回值是被删除的元素

⑥sort():排序函数 sort( function(a,b){ return a-b})这是升序 b-a则是降序

非破坏性方法

slice (截取的起始位置,截取的长度)截取数组片段,返回一个新截取的数组 不改变原数组,第一个参数不写那么则会一直截取到最后,两个参数都省略可以对数组进行浅拷贝

②concat():连接数组,返回一个新数组

③indexOf(元素,开始查询此元素的位置)获取数组中元素第一次出现的索引,并返回它的索引,没有返回-1

④lastIndexOf :和③ 相同 从后往前找

⑤join():将数组的元素连接成一个字符串,默认元素之间用逗号隔开,在小括号里面可以指定元素之间的符号 如join(@):这表示元素之间用@符号隔开

3、冒泡排序

每次将数组内最大的数排到数组最后的位置,

将上述操作完成数组的长度减1次(length-1)就是冒泡排序

<script>
        let arr = [4, 8, 9, 1, 3, 4, 5, 2, 0]
        for (let j = 0; j < arr.length - 1; j++) {//执行数组的长度次数,完成冒泡,循环length-1次
            for (let i = 0; i < arr.length - j - 1; i++) {//,这里执行了一次将数组中最大的元素放到数组的最后面
                if (arr[i] > arr[i + 1]) {
                    let temp
                    temp = arr[i]
                    arr[i] = arr[i + 1]
                    arr[i + 1] = temp
                }
            }
        }
        console.log(arr);
    </script>

4、数组去重

方法一

        分别遍历两个数组,先遍历非空的那个数组,然后判断空数组中是否有跟当前非空数组中国相同的元素,不同则push这个元素到 之前的空数组中去

<script>
        //两个数组;分别遍历两个数组,先遍历非空的那个数组,然后判断空数组中是否
            有跟当前非空数组中国相同的元素,不同则push这个元素到之前的空数组中去
        let arr = [1, 1, 2, 2, 3, 4, 5]
        let newArr = []
        for (let i = 0; i < arr.length; i++) {
            let flag = true//设置一个开关
            for (let j = 0; j < newArr.length; j++) {
                if (arr[i] === newArr[j]) {
                    flag = false
                    break;
                }
            }//上面内部的for循环完之后才能拿到flag的值(也就是说只有循环完之后
                才能知道是否有相同的元素),所以下面的判断条件要写再循环的外面
            if (flag) {
                newArr.push(arr[i])
            }
        }
        console.log(newArr);
    </script>

方法二    

indexOf():判断数组里面是否有某个元素,并返回它的索引,没有返回-1

        

   const arr = [1, 2, 3, 4, 5, 1, 2, 3]
        const newArr = []
        for (let i = 0; i < arr.length; i++){
            // arr[i]
            // 遍历旧的数组, 如果在新数组里面, 没有这个元素, 就把这个元素放到新数组里面
             if (newArr.indexOf(arr[i]) === -1 ){
                newArr.push(arr[i])
             }

       
        }

        console.log(newArr)

方法三     

includes ()判断数组里面是否包含某个元素 ,并返回true 或者false

 const arr = [1, 2, 3, 4, 5, 1, 2, 3]
        const newArr = []
        for (let i = 0; i < arr.length; i++){
            if (!newArr.includes(arr[i])) {
                newArr.push(arr[i])
            }
        }
        console.log(newArr)

方法四

  const res = [...new Set([1,2,3,3,2,1])]
        console.log(res)

      或者是

const res2 = Array.from(new Set([1,2,3,3,2,1]))

   伪数组: 有length 有索引;但是没有数组的方法 pop ,push 
   Array.from()  把伪数组,转换为真数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值