• imanager一些常用方法汇总


    一、求和函数(根据键值数组求键值的总和)

     1 function sum(arr){
     2         //arr是传入的值数组,格式如["张三","李四","王五"] 或 [10,23,45] 等
     3         var totalSum = 0;
     4         if(arr.length !=0){
     5             //判断类型,string类型,number类型,date类型
     6             //传入数组数据是number类型值,计算总和---总和 = 每一个值相加
     7             if(typeof parseInt(parseInt(arr[0]))=="number"){
     8                 //判断是否是日期类型
     9                 var a = /^(d{4})-(d{2})-(d{2})$/;
    10                 if(a.test(arr[0])){
    11                     for(var i = 0;i<arr.length;i++){
    12                         totalSum = totalSum + 1;
    13                     }
    14                 }else{
    15                     for(var i = 0;i<arr.length;i++){
    16                         totalSum = totalSum + parseInt(arr[i]);
    17                     }
    18                 }
    19             }else if(typeof parseInt(arr[0])=="string"){
    20                 //判断是否是string类型值,计算总和 ---总和 = 每一个值的个数相加
    21                 for(var i = 0;i<arr.length;i++){
    22                     totalSum = totalSum + 1;
    23                 }
    24             }else{
    25                 //do nthing
    26             }
    27         }else{
    28             return 0;
    29         }
    30         //返回计算结果totalSum
    31         return totalSum;
    32     };

    备注:

      该函数主要用于计算一个数组键值的和,根据数组数据的类型选择计算方式,对于没有考虑到的数据类型,可以在else{//do nothing}里面设置该类型数组的求和处理方法。

    二、根据传入的数据和传入的键名获取对象中某个键的值

     1 function getValuesByField (fields,keyname){
     2     //fields指的是传入的对象,即:{name:"张三",age:"4"}格式
     3     //keyname指的是数组中的name或者age
     4     var value = "";
     5     var data = fields;
     6     for( var i = 0;i < data.length; i++){
     7         for(var tmp in data[i]){
     8             //判断当前的key和传入的keyname是否相等
     9             if( tmp == keyname){
    10                 value = data[i][tmp];
    11             }else{
    12                 //do nothing
    13             }
    14         }
    15     }
    16     //返回keyname这个键对应的键值value
    17     return value;
    18 };

    备注:

    本函数实现的是 fields.name="张三"功能,通常情况下都是在已知键名的情况下,取键值。但是在向管理驾驶舱这种不已知键名的情况,需要先获取出键名,但是键名可能是中文,在js里面直接使用fields."用户名"这样的方法去取键值,是不被编译器允许的,所以就可以通过上面的函数代替。

    三、根据数组获取数组键的函数

     1 /*
     2  * 获取数组键的方法
     3  * */
     4  function getKeys(fields) {
     5     //fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
     6     var data1 = new Array();
     7     var data = fields; 
     8     //取传入数组的第一个对象
     9     if(0 != data.length){
    10         data = data[0];
    11         for(var tmp in data){
    12             // console.log(tmp);//“键名”
    13             // console.log(data[tmp]);//“键值'
    14             data1.push(tmp);
    15         } 
    16     }else{
    17         //do nothing
    18     }
    19     return data1;
    20 };

    备注:

    在大多数情况下,都是已知数组键,根据键获取对应的键值,该方法适用于,数组键未知情况下,获取出数组中所有的键情况。

    四、根据数组获取数组键值的函数

     1 /*
     2  * 获取数组键的方法
     3  * */
     4  function getKeyValues(fields) {
     5     //fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
     6     var result = new Array();
     7     var data = fields; 
     8     //取传入数组的第一个对象
     9     if(0 != data.length){
    10         data = data[0];
    11         for(var tmp in data){
    12             //tmp 为键名
    13             //data[tmp] 为键值
    14             result.push(data[tmp]);
    15         } 
    16     }else{
    17         //do nothing
    18     }
    19     return result;
    20 };

    备注:

    在大多数情况下,都是已知数组键,根据键获取对应的键值,即:arr.name形式,该方法适用于,数组键未知情况下,获取出数组中所有的键值情况。

    五、根据键值数组找对应的键名数组函数

     1 /*
     2  * 根据键值数组找对应的键名数组---中文键值数组找到对应的英文键名数组
     3  * */
     4 function getFieldsByValue(totaldatas,fieldDatas) {
     5     //totaldatas数组代表着对应关系数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
     6     //fieldDatas数组代表中文表头数据数组,即:["姓名","年龄"]格式数组,该数组是通过页面填写和相应的js方法获取到的
     7     //上面两个数组是通过数组[{name:"姓名"},{age:"年龄"}]建立的对应关系。
     8     var resultdata = [];
     9 
    10     //遍历中文键值数组,取出表头
    11     for ( var i = 0;i < fieldDatas.length; i++){
    12         var newField = fieldDatas[i];
    13         //遍历对应关系数组
    14         for ( var j = 0;j < totaldatas.length; j++){
    15             for(var tmp in totaldatas[j]){
    16                 //判断对应关系数组中的键值 和 表头数据的当前值 是否相等
    17                 if(totaldatas[j][tmp] == newField){
    18                     resultdata.push(tmp);
    19                 }else{
    20                     // do nothing
    21                 }
    22             }
    23         }
    24     }
    25     return resultdata;
    26 };

    备注:

    该函数是在管理驾驶舱项目中处理图数据时候用到的,通过创建图页面绑定数据到js里面,js里面可以整理出["姓名","年龄"]这样一个数组,但是后台返回的数据数组是[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组,没有办法通过中文键名直接去这个数组中获取到对应的键值,所以就需要用到了上面这个函数,先通过上面的函数,将["姓名","年龄"]数组找到对应的[name,age],然后再去处理找到真正的数据。

    六、函数封装

      1 <!--service.js-->
      2 angular.module('iManager.services', [])
      3 .factory('commonFunctions',function () {
      4     return {
      5             /*
      6              * 根据键值数组求键值的总和
      7             **/
      8             sum : function(arr){
      9             //arr是传入的值数组,格式如["张三","李四","王五"] 或 [10,23,45] 等
     10             var totalSum = 0;
     11             if(arr.length !=0){
     12                 //判断类型,string类型,number类型,date类型
     13                 //传入数组数据是number类型值,计算总和---总和 = 每一个值相加
     14                 if(typeof parseInt(parseInt(arr[0]))=="number"){
     15                     //判断是否是日期类型
     16                     var a = /^(d{4})-(d{2})-(d{2})$/;
     17                     if(a.test(arr[0])){
     18                         for(var i = 0;i<arr.length;i++){
     19                             totalSum = totalSum + 1;
     20                         }
     21                     }else{
     22                         for(var i = 0;i<arr.length;i++){
     23                             totalSum = totalSum + parseInt(arr[i]);
     24                         }
     25                     }
     26                 }else if(typeof parseInt(arr[0])=="string"){
     27                     //判断是否是string类型值,计算总和 ---总和 = 每一个值的个数相加
     28                     for(var i = 0;i<arr.length;i++){
     29                         totalSum = totalSum + 1;
     30                     }
     31                 }else{
     32                     //do nthing
     33                 }
     34             }else{
     35                 return 0;
     36             }
     37             //返回计算结果totalSum
     38             return totalSum;
     39         },
     40         
     41         /*
     42         * 根据传入的数据和传入的键名获取对象中某个键的值
     43         **/
     44         getValuesByField : function(fields,keyname){
     45             //fields指的是传入的对象,即:{name:"张三",age:"4"}格式
     46             //keyname指的是数组中的name或者age
     47             var value = "";
     48             var data = fields;
     49             for( var i = 0;i < data.length; i++){
     50                 for(var tmp in data[i]){
     51                     //判断当前的key和传入的keyname是否相等
     52                     if( tmp == keyname){
     53                         value = data[i][tmp];
     54                     }else{
     55                         //do nothing
     56                     }
     57                 }
     58             }
     59             //返回keyname这个键对应的键值value
     60             return value;
     61         },
     62         
     63          /*
     64          * 获取数组键的方法
     65          * */
     66          getKeys : function(fields) {
     67             //fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
     68             var data1 = new Array();
     69             var data = fields; 
     70             //取传入数组的第一个对象
     71             if(0 != data.length){
     72                 data = data[0];
     73                 for(var tmp in data){
     74                     // console.log(tmp);//“键名”
     75                     // console.log(data[tmp]);//“键值'
     76                     data1.push(tmp);
     77                 } 
     78             }else{
     79                 //do nothing
     80             }
     81             return data1;
     82         },
     83         
     84          /*
     85          * 获取数组键值的方法
     86          * */
     87          getKeyValues : function(fields) {
     88             //fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
     89             var result = new Array();
     90             var data = fields; 
     91             //取传入数组的第一个对象
     92             if(0 != data.length){
     93                 data = data[0];
     94                 for(var tmp in data){
     95                     //tmp 为键名
     96                     //data[tmp] 为键值
     97                     result.push(data[tmp]);
     98                 } 
     99             }else{
    100                 //do nothing
    101             }
    102             return result;
    103         },
    104         
    105         /*
    106          * 根据键值数组找对应的键名数组---中文键值数组找到对应的英文键名数组
    107          * */
    108         getFieldsByValue : function(totaldatas,fieldDatas) {
    109             //totaldatas数组代表着对应关系数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
    110             //fieldDatas数组代表中文表头数据数组,即:["姓名","年龄"]格式数组,该数组是通过页面填写和相应的js方法获取到的
    111             //上面两个数组是通过数组[{name:"姓名"},{age:"年龄"}]建立的对应关系。
    112             var resultdata = [];
    113         
    114             //遍历中文键值数组,取出表头
    115             for ( var i = 0;i < fieldDatas.length; i++){
    116                 var newField = fieldDatas[i];
    117                 //遍历对应关系数组
    118                 for ( var j = 0;j < totaldatas.length; j++){
    119                     for(var tmp in totaldatas[j]){
    120                         //判断对应关系数组中的键值 和 表头数据的当前值 是否相等
    121                         if(totaldatas[j][tmp] == newField){
    122                             resultdata.push(tmp);
    123                         }else{
    124                             // do nothing
    125                         }
    126                     }
    127                 }
    128             }
    129             return resultdata;
    130         };
    131     }
    132 }

    **注意:**

    如果封装过程中一个被封装的函数调用了另外一个函数,需要在return上面将这个函数重写。

    七、使用说明

    1. 依赖注入
    1 /** app.js文件 **/
    2 var iManager=angular.module("iManager",['iManager.controllers','iManager.services'])
    3 备注:模块声明,模块名:iManager,在[]里面依赖注入iManager.controllers模块和iManager.services模块
    4 
    5 /*main.js文件*/
    6 angular.module('iManager.controllers', [])
    7     .controller('WorksheetCtrl',function($scope,commonFunctions){
    8         //do nothing
    9     })

    备注:

    在要是用上面方法的controller里面依赖注入commonFunctions,如上。

    1. 函数调用
    1 /*main.js文件*/
    2 angular.module('iManager.controllers', [])
    3     .controller('WorksheetCtrl',function($scope,commonFunctions){
    4         commonFunctions.sum(data);
    5     })

    备注:

    在要是用上面方法的controller里面依赖注入commonFunctions后,直接通过 commonFunctions.函数名 使用,如上。

  • 相关阅读:
    HTML5学习笔记-2.HTML基础
    HTML5学习笔记-1.网页入门
    Java学习笔记-8.多线程编程
    Java学习笔记-7.Java IO流
    Java学习笔记-6.Java异常处理
    Java学习笔记-5.常用数据结构
    Java学习笔记-4.继承与多态
    Java学习笔记-3.类与对象
    C语言学习笔记-10.文件
    .net core 中threadpool用法
  • 原文地址:https://www.cnblogs.com/mycnblogs-guoguo/p/9705122.html
Copyright © 2020-2023  润新知