数组的一些方法以及案例应用

168 阅读3分钟

1.reverse() 应用场景:后端有时候给我们的数据可能是按时间从小到大的,但我们给用户呈现的应该是最新的数据,所以需要翻转数组

      let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
      arr.reverse()
      console.log(arr);  //[9, 8, 7, 6, 5, 4, 3, 2, 1]

2.暴力清空数组

  let arr1 = [1, 23, 5, 6, 7, 8]

        let str = '123456789'
        console.log('arr1', arr1.length, 'str', str.length);
        arr1.length = 1 //length给的长度多少,就只显示多少个数据
        console.log(arr1); //[1]
        arr1.length = 0 //数组可以使用length = 0来实现清空数组
        console.log('清空数组后', arr1);
        str.length = 0 //字符串使用length = 0 无效
        console.log(str); //'123456789' 原字符串返回

3.数组转换字符串 join()

   //join() 默认数组中每一项数据用逗号分隔
        let arr2 = ['周杰伦', '刘德华', '华晨宇']
        console.log(arr2.join()); //周杰伦,刘德华,华晨宇
        console.log(arr2.join('-')); //周杰伦-刘德华-华晨宇
        console.log(arr2.join('')); //周杰伦刘德华华晨宇

4.数组排序

  let arr3 = [23, 54, 465, 324, 2133, 435, 65, 34, 657]

        arr3.sort(function (a, b) {
            return a - b //从大到小
        })
        console.log(arr3);   //[23, 34, 54, 65, 324, 435, 465, 657, 2133]
        arr3.sort(function (a, b) {
            return b - a //从小到大
        console.log(arr3);   //[2133, 657, 465, 435, 324, 65, 54, 34, 23]
        })

5.splice() 增删改

     let arr4 = ['周杰伦', '周周', '阿强', '阿华', '66']
     arr4.splice(1, 1, '华晨宇')
     console.log(arr4);     //['周杰伦', '华晨宇', '阿强', '阿华', '66']

6.交换数据

 let a = 1;
 let b = 10;
 [a, b] = [b, a]
 console.log(a, b);    //10  1

7.展开运算符 ...

   //(1).赋值地址,一改全改
        let arr5 = [1, 2, 3, 4, 5, 6, 7]
        let arr6 = arr5
        arr6[0] = 100
        console.log(arr5);   //[100, 2, 3, 4, 5, 6, 7]


  // (2).新建一个数组,堆空间另外开辟空间,不影响原对象的数据
       let arr7 = [1, 2, 3]
       arr7 = [...arr5] //赋值没有的
       console.log(arr7);  // [100, 2, 3, 4, 5, 6, 7]
       arr7[0] = 5
       console.log(arr7);    //[5, 2, 3, 4, 5, 6, 7]

  // (3)应用
      let max = Math.max(...arr7) //这里只复制了arr7里面的数据
      console.log(max);  //7
      console.log(Math.max.apply(Math, arr7)); //这里调用了apply方法,将this指向Math对象  //7

8.forEach() 遍历 注意:不改变原数组!!!

   // (1)常规遍历方法
        let arr8 = ['aa', 'bb', 'cc', 'dd', 'ff']
        for (let i = 0; i < arr8.length; i++) {
        console.log(i, arr8[i]);
        }
    // (2)forEach() 遍历
       let newArr = []
       arr8.forEach((item, i) => {
       newArr.push(item + 10)
       })
       console.log(newArr);

9.map() 遍历 注意:与forEach()的区别在于,该方法会返回一个新数组

  // 对原数组进行操作,返回操作完的数据

        let arr9 = ['a', 'b', 'c', 'd', 'f']
        let newArr1 = arr9.map(function (item, i) {
            return item + '66'
        })

        console.log(newArr1);
        // (1)案例1
        let arr10 = [1, 2, 3, 4, 5, 6]
        let newArr2 = arr10.map(function (item, i) {
            return item + 10
        })
        console.log(newArr2);


        // (2)案例二
        let arr11 = ['13', '3', '79', '1', '10', '24', '78', '2']
        let newArr3 = arr11.map(function (item, i) {
            if (+item < 10) {
                return '0' + item
            }
            return item
        })
        console.log(newArr3);



        // (3)案例三
        let arr12 = [{
            name: '李狗蛋',
            age: 16,
            sex: '男'
        }, {
            name: '张翠花',
            age: 20,
            sex: '女'
        }, {
            name: '赵铁柱',
            age: 25,
            sex: '男'
        }, {
            name: '王小二',
            age: 19,
            sex: '男'
        }]

        let newArr4 = arr12.map(function (item, i) {
            item.age += 1
            // item.age++
            return item
        })
        console.log(newArr4);

10.fliter 过滤

        //案例1.去除数组中的空字符串
        let arr14 = ['11','bb','dd','','','adsf','']
        let newArr6 = arr14.filter(function(item,i){
            return item!==''
        })
        console.log(newArr6)

       //案例2.去除数组中的空字符串以及0值
        let arr15 = ['aa', 'bb', 'ccc', '', 0, '6566', 0, '']
        let newArr7 = arr15.filter(function (item, i) {
            return item !== '' && item !== 0
        })
        console.log(newArr7);

        //案例3.数组去重
        let arr13 = [1, 2, 1, 3, 4, 4, 5, 6, 0, 6, 7, 7, 8, 88, 9, 9]
        let newArr5 = arr13.filter(function (item, i) {
            return arr13.indexOf(item) === i //选出数组中数据出现第一次
        })
        console.log(newArr5);   //[1, 2, 3, 4, 5, 6, 0, 7, 8, 88, 9]