js中数组对象的排序及vue项目中的使用

本文介绍了一种JavaScript中对数组对象进行排序的方法,通过指定排序规则确保每次加载时数组元素都能按一致顺序排列,提高了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js数组对象排序

项目中遇到每次重启设备 tab标题随机显示,用户体验不好,于是需要排序,使得每次都按一定的顺序显示,直接上源码,

	<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>数组对象排序</title>
    </head>
    <body>
        <script>
          var objs = [
              {   isActive: true,
              	isDisabled: false,
              	isVisible: true,
              	hash: 'CVConfigProtocalATVSIP',
              	header: 'ATVSIP'
              },
              { isActive: true,
              	isDisabled: false,
              	isVisible: true,
              	hash: 'CVConfigProtocalATVTurn',
              	header: 'ATVTurn'
              },
              {
                  isActive: true,
                  isDisabled: false,
                  isVisible: true,
                  hash: 'CVConfigProtocalFseyeOrDeviceID',
                  header: 'DeviceID',
              },
              {
                  isActive: true,
                  isDisabled: false,
                  isVisible: true,
                  hash: 'CVConfigProtocalGB28181',
                  header: 'GB28181',
              },
              {
                  isActive: true,
                  isDisabled: false,
                  isVisible: true,
                  hash: 'CVConfigProtocalGB35114',
                  header: 'GB35114',
              },
              {
                  isActive: true,
                  isDisabled: false,
                  isVisible: true,
                  hash: 'CVConfigProtocalI8S',
                  header: 'I8S',
              },
          ];

         objs.sort(function (a, b) {
             // order是规则  objs是需要排序的数组
             var order = ['DeviceID', 'GB28181', 'I8S', 'ATVTurn', 'ATVSIP', 'GB35114'];
             return order.indexOf(a.header) - order.indexOf(b.header);
         });

         // 根据规则排序后新的数组
         var result = objs.map(function (a) {
             return a['hash'];
         });

         console.log('Current order is: ' + result.join(', '), 'result: ' + result);
   //==> CVConfigProtocalFseyeOrDeviceID,
         // CVConfigProtocalGB28181,
         // CVConfigProtocalI8S,
         // CVConfigProtocalATVTurn,
         // CVConfigProtocalATVSIP,
         // CVConfigProtocalGB35114
			
	  //项目中使用
       Sort_protocal(arr) {
           msg("arr",arr)
           let objs = arr;
           // order是规则  objs是需要排序的数组
           let order = ['DeviceID', 'GB28181', 'I8S', 'ATVTurn', 'ATVSIP', 'GB35114'];
           objs.sort((a, b) => {
               return order.indexOf(a.header) - order.indexOf(b.header);
           });
           let templist = [];
           for (let key in objs) {
               templist.push({
                   isActive: objs[key].isActive,
                   isDisabled: objs[key].isDisabled,
                   isVisible: objs[key].isVisible,
                   hash: objs[key].hash,
                   header: objs[key].header,
               });
           }
           this.subtabs = templist;
       },

        </script>
    </body>
</html>

tips: 此处为单页面,使用的ES5及以前的语法,由于实际项目中使用Vue.js框架,所以使用时需全部改用ES6的语法 sort方法中要使用箭头函数 用let 而不是var定义变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值