• vue2.0中计算属性带参数、对像数组删除属性等的一些操作


    计算属性带参数及删除列的操作。

    obj是一个对像数组,原来的数据是直接绑定到el-table上的,但是ECharts中用不了那么多的列,这时就需要使用计算属性来删除一些列了。

    fileterStr是一个字符串,其实就是要删除的列,用"|"号来分割的,以便于转换成数组。

    this.$delete(item,f[i]);就是用来删除对像中指定keys的内容,这里用了一个for,用来删除每一行中的指定keys

     1     computed:{
     2         //对像转换成数据,供ECharts使用
     3         dataText:function(){
     4             return function(obj,filterStr){
     5                 var mainData=[];
     6                 var f=[];
     7                 if(filterStr.length>0){
     8                     f=filterStr.split('|');
     9                 }
    10                 if(obj.length>0){
    11                     var item=obj[0];
    12                     if(f.length>0){
    13                         for(var i=0;i<f.length;i++){
    14                             this.$delete(item,f[i]);
    15                         }
    16                     }
    17                     mainData.push(Object.keys(item));
    18                 }
    19                 for (var i=0;i<obj.length;i++){
    20                     var item=obj[i];
    21                     if(f.length>0){
    22                         for(var j=0;j<f.length;j++){
    23                             this.$delete(item,f[j]);
    24                         }
    25                     }
    26                     mainData.push(Object.values(item));
    27                 }
    28                 console.log(mainData);
    29                 return mainData;
    30             }
    31             
    32         },

     注意一下:

    后来发现使用Object.keys(item)有坑,虽然方便,但是经它处理过的数据顺序都乱了,就是说列的顺序乱了,不是按照原来的列来输出了,这肯定不行。

    想想还是用传统的方法吧,我们先实现一个功能,就是第二个参数做为数据列输出的顺序,如果有内容,则按指定的顺序列输出,并过滤掉没有指定的列数据,比如说原来数据有10列,你只指定了3列,那么就显示出来三列。如果参数为空,则按数据原有的顺序原样输出,不做更改。

    显示指定列数据

    修改后的代码如下,适用于已经知道列名称的情况下使用,对于行列转置动态生成的列,我们后面再说。

     1     computed:{
     2         //对像转换成数据,供ECharts使用,如果FilterStr有内容,则按指定的顺序生成数据,如果没有,则按原始的顺序生成数据
     3         dataText:function(){
     4             return function(obj,filterStr){
     5                 var mainData=[];
     6                 var f=[];
     7                 if(filterStr.length>0){
     8                     f=filterStr.split('|');
     9                 }
    10                 // if(obj.length>0){
    11                 //     var item=obj[0];
    12                 //     if(f.length>0){
    13                 //         for(var i=0;i<f.length;i++){
    14                 //             this.$delete(item,f[i]);
    15                 //         }
    16                 //     }
    17                 //     mainData.push(Object.keys(item));
    18                 // }
    19                 // for (var i=0;i<obj.length;i++){
    20                 //     var item=obj[i];
    21                 //     if(f.length>0){
    22                 //         for(var j=0;j<f.length;j++){
    23                 //             this.$delete(item,f[j]);
    24                 //         }
    25                 //     }
    26                 //     mainData.push(Object.values(item));
    27                 // }
    28 
    29                 //如果filterstr参数有内容,则使用指定的顺序来生成数据
    30                 if(filterStr.length>0){
    31                     mainData.push(f);  //标题列
    32                     for (var i=0;i<obj.length;i++){
    33                         var item=obj[i];
    34                         var subitem=[];
    35                         for(var j=0;j<f.length;j++){
    36                             for(var key in item){
    37                                 if(f[j]==key){//进行过滤
    38                                     subitem.push(item[key]);
    39                                 }
    40                             }
    41                         }
    42                         mainData.push(subitem)
    43                     }
    44                 }else{
    45                 //如果参数没有内容,则按原顺序生成数据
    46                     var titleitem=[];
    47                     for(var key in obj[0]){
    48                         titleitem.push(key);
    49                     }
    50                     mainData.push(titleitem);//标题列
    51 
    52                     for(var i=0;i<obj.length;i++){
    53                         var item=obj[i];
    54                         var subitem=[];
    55                         for(var key in item){
    56                             subitem.push(item[key]);
    57                         }
    58                         mainData.push(subitem)
    59                     }
    60 
    61                 }
    62                 console.log(mainData);
    63                 return mainData;
    64             }
    65             
    66         },
  • 相关阅读:
    字符串格式化及操作操作
    操作文件
    python学习笔记(数据类型)
    抓包工具之—charles碎言碎语
    jmeter之关联操作
    eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
    java使用this关键字调用本类重载构造器
    无法安装Windows Live“OnCatalogResult:0x80190194”错误的解决方法
    JavaScript笔试必备语句
    VS2015详细安装步骤
  • 原文地址:https://www.cnblogs.com/wjbych/p/13754965.html
Copyright © 2020-2023  润新知