面试题中对于操作数组实现某种形式的改变层出不穷,在这里我们简单介绍三种常见数组面试题,日后随着不断的学习还会更新,敬请关注。

数组去重

//原数组
        var arr = [8,11,2,'a',5,true,true,8,2,4,0,8,'a','b']
        //新数组
        var t = []
        //初始化数组中的第一个数据
        t[0] = arr[0]
        //原数组中的每个数据向新数组中添加元素之前都会去判断新数组中有没有相同的数据
        //有则跳出,没有则添加该元素
        for (let i = 0; i < arr.length; i++) {
            for (let j = 0; j < t.length; j++) {
                //如果相同则跳出该循环,继续遍历原数组中下一个元素
                if (arr[i] == t[j]) {
                    break
                }
                //拿原数组中的元素比较到新数组中的最后一个元素没有重复,当没有重复时,将其添加进数组
                if (j == t.length - 1) {
                    t.push(arr[i])
                }
            }
        }  
        //打印出新数组
        console.log(t)

 输出结果:
在这里插入图片描述

冒泡排序

原理图:
 
在这里插入图片描述

        var arr = [5,9,7,2,1]
        //5个元素则需要进行四轮的排序 arr.length -1
        for (let i = 0; i < arr.length - 1; i++) {
            //冒泡法排序,第一个元素逐渐向上进行比对,如果前面的元素大于后面的元素则使其冒泡,逐渐向数组后方排列
            //5个元素第一轮数组中第一个元素则最大需要交换4次 5个元素第二轮数组中的第二个元素最大需要交换3次
            //则有着 arr.length - 1 -i
            for (let j = 0; j < arr.length -1 - i; j++) {
                //如果数组中靠前的数据大于靠后的数据则使其向后排列(冒泡)
                if (arr[j] > arr[j+1]) {
                    //创建中间变量进行交换数据,使得值较大的数据向后排列
                    var temp = arr[j]    
                    arr[j] = arr[j+1]
                    arr[j+1] = temp
                    
                }
            }
        }
        //打印输出
        console.log(arr)

输出结果:
在这里插入图片描述

反转数组

原理图:
在这里插入图片描述

//打印输出
        var arr = [1,2,3,4,5,6,7,8]
        for (let i = 0; i < arr.length/2; i++) {

            //借助第三方变量交换两个变量的值
            var temp = arr[i]
            arr[i] = arr[arr.length - 1 - i]
            arr[arr.length - 1 -i] = temp

        }
        //打印输出后的结果
        console.log(arr)

 后台打印输出结果:

在这里插入图片描述


我的名字豌豆
406 声望746 粉丝

一起共同进步吧!