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

 function sum(arr){
//arr是传入的值数组,格式如["张三","李四","王五"] 或 [10,23,45] 等
var totalSum = 0;
if(arr.length !=0){
//判断类型,string类型,number类型,date类型
//传入数组数据是number类型值,计算总和---总和 = 每一个值相加
if(typeof parseInt(parseInt(arr[0]))=="number"){
//判断是否是日期类型
var a = /^(\d{4})-(\d{2})-(\d{2})$/;
if(a.test(arr[0])){
for(var i = 0;i<arr.length;i++){
totalSum = totalSum + 1;
}
}else{
for(var i = 0;i<arr.length;i++){
totalSum = totalSum + parseInt(arr[i]);
}
}
}else if(typeof parseInt(arr[0])=="string"){
//判断是否是string类型值,计算总和 ---总和 = 每一个值的个数相加
for(var i = 0;i<arr.length;i++){
totalSum = totalSum + 1;
}
}else{
//do nthing
}
}else{
return 0;
}
//返回计算结果totalSum
return totalSum;
};

备注:

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

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

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

备注:

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

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

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

备注:

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

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

 /*
* 获取数组键的方法
* */
function getKeyValues(fields) {
//fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
var result = new Array();
var data = fields;
//取传入数组的第一个对象
if(0 != data.length){
data = data[0];
for(var tmp in data){
//tmp 为键名
//data[tmp] 为键值
result.push(data[tmp]);
}
}else{
//do nothing
}
return result;
};

备注:

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

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

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

备注:

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

六、函数封装

 <!--service.js-->
angular.module('iManager.services', [])
.factory('commonFunctions',function () {
return {
/*
* 根据键值数组求键值的总和
**/
sum : function(arr){
//arr是传入的值数组,格式如["张三","李四","王五"] 或 [10,23,45] 等
var totalSum = 0;
if(arr.length !=0){
//判断类型,string类型,number类型,date类型
//传入数组数据是number类型值,计算总和---总和 = 每一个值相加
if(typeof parseInt(parseInt(arr[0]))=="number"){
//判断是否是日期类型
var a = /^(\d{4})-(\d{2})-(\d{2})$/;
if(a.test(arr[0])){
for(var i = 0;i<arr.length;i++){
totalSum = totalSum + 1;
}
}else{
for(var i = 0;i<arr.length;i++){
totalSum = totalSum + parseInt(arr[i]);
}
}
}else if(typeof parseInt(arr[0])=="string"){
//判断是否是string类型值,计算总和 ---总和 = 每一个值的个数相加
for(var i = 0;i<arr.length;i++){
totalSum = totalSum + 1;
}
}else{
//do nthing
}
}else{
return 0;
}
//返回计算结果totalSum
return totalSum;
}, /*
* 根据传入的数据和传入的键名获取对象中某个键的值
**/
getValuesByField : function(fields,keyname){
//fields指的是传入的对象,即:{name:"张三",age:"4"}格式
//keyname指的是数组中的name或者age
var value = "";
var data = fields;
for( var i = 0;i < data.length; i++){
for(var tmp in data[i]){
//判断当前的key和传入的keyname是否相等
if( tmp == keyname){
value = data[i][tmp];
}else{
//do nothing
}
}
}
//返回keyname这个键对应的键值value
return value;
}, /*
* 获取数组键的方法
* */
getKeys : function(fields) {
//fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
var data1 = new Array();
var data = fields;
//取传入数组的第一个对象
if(0 != data.length){
data = data[0];
for(var tmp in data){
// console.log(tmp);//“键名”
// console.log(data[tmp]);//“键值'
data1.push(tmp);
}
}else{
//do nothing
}
return data1;
}, /*
* 获取数组键值的方法
* */
getKeyValues : function(fields) {
//fields是传入的数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
var result = new Array();
var data = fields;
//取传入数组的第一个对象
if(0 != data.length){
data = data[0];
for(var tmp in data){
//tmp 为键名
//data[tmp] 为键值
result.push(data[tmp]);
}
}else{
//do nothing
}
return result;
}, /*
* 根据键值数组找对应的键名数组---中文键值数组找到对应的英文键名数组
* */
getFieldsByValue : function(totaldatas,fieldDatas) {
//totaldatas数组代表着对应关系数组,即:[{name:"张三",age:"4"},{name:"李四",age:"5"},{name:"王五",age:"8"}]格式数组
//fieldDatas数组代表中文表头数据数组,即:["姓名","年龄"]格式数组,该数组是通过页面填写和相应的js方法获取到的
//上面两个数组是通过数组[{name:"姓名"},{age:"年龄"}]建立的对应关系。
var resultdata = []; //遍历中文键值数组,取出表头
for ( var i = 0;i < fieldDatas.length; i++){
var newField = fieldDatas[i];
//遍历对应关系数组
for ( var j = 0;j < totaldatas.length; j++){
for(var tmp in totaldatas[j]){
//判断对应关系数组中的键值 和 表头数据的当前值 是否相等
if(totaldatas[j][tmp] == newField){
resultdata.push(tmp);
}else{
// do nothing
}
}
}
}
return resultdata;
};
}
}

**注意:**

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

七、使用说明

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

备注:

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

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

备注:

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

imanager一些常用方法汇总的更多相关文章

  1. oracle教程:PLSQL常用方法汇总

    oracle教程:PLSQL常用方法汇总 在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set ...

  2. 解压命令unzip常用方法汇总

    解压命令unzip常用方法汇总: 1.把文件解压到当前目录下 1 unzip pythontab.com.zip 2.如果要把文件解压到指定的目录下,需要用到-d参数. 1 unzip -d ./tm ...

  3. [C#.Net]启动外部程序的几种常用方法汇总

    本文汇总了C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法: 1. 启动外部程序,不等待其退出. 2. 启动外部程序,等待其退出. 3. 启动外部程序,无限等待其退出. 4. 启 ...

  4. 使用markdown编辑evernote(印象笔记)的常用方法汇总

    原文发表在我的博客主页,转载请注明出处 前言 正所谓工欲善其事,必先利其器,本文将要介绍的evernote和markdown都是程序员必备的工具 虽然国内现在有了很多evernote的替代品,做的比较 ...

  5. Math对象常用方法汇总

    前几天翻阅<JavaScript权威指南>,看到了Math对象,于是汇总了一下. Math对象不同于其他的对象,它可以说是一个公共数学类,里面有很多数学方法,用于各种数学运算,但是Math ...

  6. StringUtils工具类常用方法汇总2(截取、去除空白、包含、查询索引)

      在上一篇中总结了StringUtils工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法. 一.截取   StringUtils ...

  7. AngularJS - 常用方法汇总

    1. 数组元素的常用方法: http://www.cnblogs.com/diaosizhang/p/3729078.html 2. js的强大的splice方法  http://www.jb51.n ...

  8. 数据类型int、float、str、list、dict、set定义及常用方法汇总

    数据类型int:记录整数事物状态 可变不可变:值不可变类型,改变变量值实则是改变了变量的指向 int():功能:1.工厂函数, i = 5 <==> i = int(5) 2.强制类型转换 ...

  9. Hibernate hql getHibernateTemplate()常用方法汇总

    转自:https://www.iteye.com/blog/zwdsmileface-2191943 getHibernateTemplate()常用方法 一.find(String queryStr ...

随机推荐

  1. Spring Boot log4j多环境日志级别的控制

    之前介绍了在<Spring boot中使用log4j>,仅通过log4j.properties对日志级别进行控制,对于需要多环境部署的环境不是很方便,可能我们在开发环境大部分模块需要采用D ...

  2. Smart/400开发上手4: 调试Cobol代码 (DEBUG with QBATCH)

    Step1:Compile Cobol source CB TIM07 using *SRCDBG option例如:CB MEMBER(TIM07) OPTION(*SRCDBG) WORKU(TI ...

  3. Odoo 学习地址

    Odoo官文文档: https://www.odoo.com/zh_cn/page/docs http://www.odoo.com/documentation/8.0/ Odoo中文文档推荐: ht ...

  4. office2013安装与卸载

    一.office2013卸载不干净,重新安装的时候就会报错.下面是博主卸载的步骤: 第一步:下载office官方卸载工具 ,链接:http://pan.baidu.com/s/1nvuoEYd 密码: ...

  5. Ruby:Open-uri和Net::HTTP的不同

    OpenURI不仅可以用来发起http请求,也可以发起https和ftp请求

  6. Android 开发工具类 33_开机自运行

    原理:该类派生自 BroadcastReceiver,重载方法 onReceive ,检测接收到的 Intent 是否符合 BOOT_COMPLETED,如果符合,则启动用户Activity. imp ...

  7. Android_如何隐藏应用程序的图标

    接下来我要说的这种方法可以隐藏图标,同是也可以正常启动运行. 在manifest的入口activity里面intent-filter中设置<data></data>元素. 比如 ...

  8. GO入门——1.基础

    1 安装配置与命令 GOROOT:Go根目录 GOPATH:GO工作目录,其目录下需要建立一下三个子目录 bin :存放编译后生成的可执行文件 pkg :存放编译后生成的包文件 src :存放项目源码 ...

  9. koa-router post请求接收的参数为空

    注:koa-router路由和koa-bodyparser中间件  post请求中参数为空. 页面代码 <!DOCTYPE html> <html> <head> ...

  10. mysql-定时对表分区

    1, 分区 具体可见: http://blog.csdn.net/open_data/article/details/46893331 1, 分区类型: RANGE分区:基于属于一个给定连续区间的列值 ...