一个列表按时间从大到小显示前5条

数据在页面获取的,不是后台接收的,需要按时间从新到旧排序然后显示前5条。

代码写到这卡住了。
是在代码里把时间转换成时间戳,比较时间戳的大小
时间戳的排序是拍好的,就是 obj,只取了5个。
然后我是把值赋给li,给设置了个data-num,判断这个跟obj里的一致,就显示对应的那条li。
现在在页面就显示没有排序过的10条。应该是判断错了,有解决办法吗?

<script src="./jquery.min.js"></script>
    <script>
        $(function () { 
            function sortArr(){
                var arr =[];

                $('.i-list li').hide();

                $(".i-list li").each(function(index,element){
                    var _this = $(this);
                    var ele = Date.parse(new Date($(this).find('.time').text().replace("-","/").replace("-","/")));
                    _this.attr('data-num',ele);
                    // console.log(ele);
                    arr.push(ele);
                    arr = arr.sort(function(a,b){
                        return a < b ? 1 : -1;
                    });

                    var obj = arr.slice(0,5);
                    
                    for (var j = 0; j < obj.length; j++) {
                        if(_this.attr('data-num') == obj[j]) {
                            _this.show();
                        }
                    }
                        
                });
            }
            sortArr();
        });
    </script>
阅读 1.5k
1 个回答

不是,为什么每一个li的循环都有一个排序过程。第一个li,arr是空的,塞进去第一个li,直接就排序了,然后还判断第一个li在不在排序的前五名,就一脑袋问号

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题