洗数据

从ajax请求回来的数据,经常是没有进行分类的,但是有时候需要进行分类,就必须做一件事,那就是洗数据


经过洗数据之后组件能够分类显示

在洗数据的时候,需要把数据结构进行改造,以方便组件在页面的渲染

{
  [
      {
          comingTitle:"11月1日 周四",
          items:[{...},{...},...]
      },
      {
          comingTitle:"11月2日 周五",
          items:[{...},{...},...]
      }
  ]
}

这种结构里面嵌套了两层数组,很显然这并不适合组件的渲染,需要将结构再次改造

{
    11月1日 周四:{
          comingTitle:"11月1日 周四",
          items:[{...},{...},...]
      },
    11月2日 周五:{
          comingTitle:"11月2日 周五",
          items:[{...},{...},...]
      }
}

这种结构相对起来就清晰很多,因此以下代码就会实现这种结构

在mounted钩子里面定义一个处理数据的内部函数

            _handleList(coming){
//              console.log(coming);
                var obj={}
                coming.forEach((el)=>{
//                  属性名默认为undefined,取反成为布尔值就变成true
                    if(!obj[el.comingTitle]){
//                      将日期赋值给对象的键名
                        obj[el.comingTitle]={
                            comingTitle:el.comingTitle,
//                          创建数组,稍后将内容转移至数组
                            items:[]
                        }
                    }
//                  将内容转移至数组
                    obj[el.comingTitle].items.push(el)
                })
//              console.log(obj)
//              组件内定义好的对象名指向完成的对象
                this.handleObj=obj;
                console.log(obj)
            }

处理获取下来的数据

            _initData(baseUrl){
                        return new Promise((resolve,reject)=>{
                            var xhr = new XMLHttpRequest();
                            xhr.open("GET",baseUrl);
                            xhr.send();
                            xhr.addEventListener("readystatechange",function(){
                                if(xhr.readyState==4){
                                    if(xhr.status==200){
                                        resolve(xhr.response);
                                    }
                                }
                                
                            })
                        }).then((res)=>{
                            this.list=JSON.parse(res).movieList;
//                          this.comingTitle=this.list[0].comingTitle;
                            this._handleList(this.list)
                            
                        })
                    }

在页面使用双重循环,就能够渲染出分类的效果

    <div v-for="(value,key) in handleObj">{{value.comingTitle}}
    <div v-for="(item,index) in value.items">{{item.nm}}</div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 此教程包含如何对文档进行简单的数据采集和存储。 基础知识储备 String & List & Dictionary...
    Maxmoe阅读 3,226评论 0 0
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 13,284评论 1 52
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,051评论 0 25
  • 不知道有多少人在步入大学之前是清醒的,知道自己要考哪所大学,知道自己要去哪个城市上大学,之所以这么问因为我就是这样...
    落画珊珊阅读 13,338评论 6 6
  • 桌子没有收拾,你在抱怨 窗帘没有拉上,你在抱怨 地板没有拖扫,你在抱怨 水龙头没有关,你在抱怨 湿衣服没有拧,你在...
    稻草人_Z阅读 1,761评论 0 0