排序置顶、非置顶算法,实现置顶后的结果和非置顶的内容排序保持原始序列

简介: 排序置顶、非置顶算法,实现置顶后的结果和非置顶的内容排序保持原始序列


<template>
    <div :class="$options.name">
        <ul>
            <li v-for="(a, i) in items" :key="i">
                <span v-if="a.topIndex">当前置顶索引topIndex:{{ a.topIndex }}</span>
                <span>当前索引index:{{ a.index }}</span>
                <label>{{ a.label }}</label>
                <el-button v-if="a.topIndex" type="danger" plain @click="unTop(a)">取消置顶</el-button>
                <el-button v-else type="primary" plain @click="top(a)">置顶</el-button>
            </li>
        </ul>
    </div>
</template>
<script>
export default {
    data() {
        return {
            topIndex: 0,//置顶索引
            items: [
                { index: 1, label: '显示文本1', },
                { index: 2, label: '显示文本2', },
                { index: 3, label: '显示文本3', },
                { index: 4, label: '显示文本4', },
                { index: 5, label: '显示文本5', },
            ]
        }
    },
    methods: {
        // 对置顶列表进行排序计算
        sortTopList(arr) {
            arr = JSON.parse(JSON.stringify(arr));
            let tops = arr.filter(v => v.topIndex);//筛选出置顶项目
            let upTops = arr.filter(v => !v.topIndex);//帅选出未置顶项目
            tops.sort((prev, next) => prev.topIndex - next.topIndex);//从小到大升序
            upTops.sort((prev, next) => prev.index - next.index);//从小到大升序
            return JSON.parse(JSON.stringify(tops.concat(upTops)));
        },
        //置顶
        top(d) {
            d.topIndex = --this.topIndex;
            this.items = this.sortTopList(this.items);
        },
        //取消置顶
        unTop(d) {
            delete d.topIndex;
            this.items = this.sortTopList(this.items);
        },
    }
};
</script> 

扩展阅读类比排序

image.png


相关文章
|
1月前
|
算法 调度
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理(二)
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理
32 0
|
1天前
|
编解码 算法 数据可视化
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
|
24天前
|
存储 算法
从动态规划到贪心算法:最长递增子序列问题的方法全解析
从动态规划到贪心算法:最长递增子序列问题的方法全解析
21 2
|
28天前
|
存储 搜索推荐 算法
【数据结构】八大排序之计数排序算法
【数据结构】八大排序之计数排序算法
12 4
|
28天前
|
搜索推荐 算法
【数据结构】八大排序之归并排序算法
【数据结构】八大排序之归并排序算法
21 5
|
28天前
|
搜索推荐 算法 编译器
【数据结构】八大排序之快速排序算法
【数据结构】八大排序之快速排序算法
36 4
|
30天前
|
算法 Python
数据结构与算法 经典排序方法(Python)
数据结构与算法 经典排序方法(Python)
24 0
|
1月前
|
存储 算法 搜索推荐
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
|
1月前
|
存储 算法
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理(三)
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理
27 0
|
1月前
|
存储 算法 搜索推荐
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理(一)
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理
108 0