首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Js如何实现升序和降序

Js如何实现升序和降序

作者头像
itclanCoder
发布2023-02-26 15:07:30
2.3K0
发布2023-02-26 15:07:30
举报
文章被收录于专栏:itclanCoderitclanCoder

前言

在网页中,实现列表的升序和降序,是一个比较常见的操作,尤其是在做一些数据栓选表格的时候,按照索引,时间等特定的参数,提供升序和降序排列的功能的

具体示例

sort

原生js

在原生js中主要是操作DOM,遍历节点,通过removeChild()删除节点,而使用appendChild()添加元素去实现的

代码如下所示

// 排序
function sort() {
    // 获取父级元素DOM
    var ul = document.getElementsByTagName('ul')[0];
    // 判断是否包含子元素
    if(ul.hasChildNodes()) {
        var len = ul.childNodes.length; // 子元素的个数
        var arr = [];   // 新数组变量用于存储节点
        for(var i = 0; i<len;i++) {
            arr[i] = ul.childNodes[0]; // 把节点存入数组
            ul.removeChild(ul.childNodes[0]); // 从第一个元素开始删除
        }
     
        // 倒过来遍历所有的节点,降序
        for(var i = len-1;i>=0;i--) {
            ul.appendChild(arr[i]);   // 添加到ul为子元素
        }
       
       
    }
}

如下是html结构

<ul>
    <li>小红-1</li>
    <li>张三-3</li>
    <li>李四-4</li>
    <li>王五-5</li>
</ul>
<input type="button" onclick="sort()" value="降序或升序" />

分析

上面的示例是先把容器html内容清空,最后,把数组的数据以倒排序的方式遍历并填充到之前的ul容器里面

使用原生js方式就是要遍历DOM节点,然后依赖DOM对象的属性或方法操作DOM

Vue版本实现

Vue里面是操作数据,结合数组的sort方法一个简单的方法就可以实现的,原生js想要实现同样类似的效果,那就得不断的去查找DOM节点,操作节点实现的

<template>
    <div class="wrap">
        <div>
            <ul>
                <li v-for="(item,index) in lists" :key="index">{{item.name}}-{{item.lan}}-{{item.chengji}}</li>
            </ul>
        </div>
        <div class="btn">
            <el-button type="primary" @click="handleJiangxu">降序</el-button>
            <el-button type="primary" @click="handleShengxu">升序</el-button>
        </div>
    </div>
</template>

<script>
    export default {
        name: 'ascendDes',
        data() {
            return {
                lists: [
                    {
                        name: '小王',
                        lan: '语文',
                        chengji: 90
                    },
                    {
                        name: '小红',
                        lan: '语文',
                        chengji: '79'
                    },

                    {
                        name: '小李',
                        lan: '语文',
                        chengji: '71'
                    },

                    {
                        name: '小白',
                        lan: '语文',
                        chengji: '85'
                    }
                ]
            }
        },

        methods: {
            // 降序
            handleJiangxu() {
                this.lists = this.lists.sort((a, b) => a.chengji - b.chengji).reverse()    // 反转一下
            },
            // 升序
            handleShengxu() {
                this.lists = this.lists.sort((a,b)=>a.chengji-b.chengji);
            }
        }
    }
</script>

<style lang="scss" scoped>
.wrap {
    text-align: center;
}
.btn {
    margin-top: 20px;
}
</style>

使用vue实现,发现就很简单,使用sort(a,b)方法,其中a代表前一个数,b代表后一个数,做一个差值,就可以判断哪个大,哪个小的

总结

升序和降序在Js中是一个比较常见的操作,做一些简单的排序操作可以基于sort方法实现

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 itclanCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 具体示例
  • 原生js
  • 分析
  • Vue版本实现
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档