imanager一些常用方法汇总
一、求和函数(根据键值数组求键值的总和)
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上面将这个函数重写。
七、使用说明
- 依赖注入
/** 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,如上。
- 函数调用
/*main.js文件*/
angular.module('iManager.controllers', [])
.controller('WorksheetCtrl',function($scope,commonFunctions){
commonFunctions.sum(data);
})
备注:
在要是用上面方法的controller里面依赖注入commonFunctions后,直接通过 commonFunctions.函数名 使用,如上。
imanager一些常用方法汇总的更多相关文章
- oracle教程:PLSQL常用方法汇总
oracle教程:PLSQL常用方法汇总 在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set ...
- 解压命令unzip常用方法汇总
解压命令unzip常用方法汇总: 1.把文件解压到当前目录下 1 unzip pythontab.com.zip 2.如果要把文件解压到指定的目录下,需要用到-d参数. 1 unzip -d ./tm ...
- [C#.Net]启动外部程序的几种常用方法汇总
本文汇总了C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法: 1. 启动外部程序,不等待其退出. 2. 启动外部程序,等待其退出. 3. 启动外部程序,无限等待其退出. 4. 启 ...
- 使用markdown编辑evernote(印象笔记)的常用方法汇总
原文发表在我的博客主页,转载请注明出处 前言 正所谓工欲善其事,必先利其器,本文将要介绍的evernote和markdown都是程序员必备的工具 虽然国内现在有了很多evernote的替代品,做的比较 ...
- Math对象常用方法汇总
前几天翻阅<JavaScript权威指南>,看到了Math对象,于是汇总了一下. Math对象不同于其他的对象,它可以说是一个公共数学类,里面有很多数学方法,用于各种数学运算,但是Math ...
- StringUtils工具类常用方法汇总2(截取、去除空白、包含、查询索引)
在上一篇中总结了StringUtils工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法. 一.截取 StringUtils ...
- AngularJS - 常用方法汇总
1. 数组元素的常用方法: http://www.cnblogs.com/diaosizhang/p/3729078.html 2. js的强大的splice方法 http://www.jb51.n ...
- 数据类型int、float、str、list、dict、set定义及常用方法汇总
数据类型int:记录整数事物状态 可变不可变:值不可变类型,改变变量值实则是改变了变量的指向 int():功能:1.工厂函数, i = 5 <==> i = int(5) 2.强制类型转换 ...
- Hibernate hql getHibernateTemplate()常用方法汇总
转自:https://www.iteye.com/blog/zwdsmileface-2191943 getHibernateTemplate()常用方法 一.find(String queryStr ...
随机推荐
- 【spring cloud】服务启动后正常,但是无法上线,一直处于down状态
spring cloud eureka 如果出现某个应用实例 down(1), 说明 spring admin 健康检测没有通过导致 eureka 注册中心不会把这个实例从列表中删除掉. 这样所有使用 ...
- nodeJs实现微信小程序的图片上传
今天我来介绍一下nodejs如何实现保存微信小程序传过来的图片及其返回 首先wx.uploadFile绝大部分时候是配合wx.chooseImage一起出现的,毕竟选择好了图片,再统一上传是实现用户图 ...
- Testing - 软件测试知识梳理 - 软件可靠性测试
软件可靠性的基本概念 错误,缺陷,故障和失效 错误:指的是软件在生命周期中各个阶段的状态和行为与人们的期待不一致的偏差,不单单是软件系统本身,中间产品的偏差也算是软件错误 缺陷:指的是软件中一切不好的 ...
- Django url分发器
视图: 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等.在视 ...
- 【转载】win7搜索文件怎么搜索文件名中带圆括号的文件
System.FileName:~=“(” 这样就行. 括号上加个引号 ~= 是包含的意思, ~< 是以什么为开头, = 是以什么为名, ~! 是不包含 来自: http://www.lao8. ...
- (转) argparse — 解析命令参数和选项
原文地址:https://pythoncaff.com/docs/pymotw/argparse-command-line-option-and-argument-parsing/166 https: ...
- JVM(四)JVM的双亲委派模型
1.两种不同的类加载器 从JAVA虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分:另 ...
- 修改vs2012 颜色
http://bbs.pcbeta.com/viewthread-1265615-1-1.html VS2012的默认深色主题的确让整个IDE看起来很有气场,而且深色的主题保护眼睛,还是蛮不错的. 但 ...
- 解决org.apache.shiro.session.UnknownSessionException: There is no session with id的问题
一.背景 最近在整合了Spring+Shiro+Redis实现tomcat集群session共享的问题之后,发布以后运行以后发现老是会出现:org.apache.shiro.session.Unkno ...
- Python学习--12 异常处理、调试
异常捕获 语法格式: try: pass except xxx as e: pass except xxx as e: pass ... else: pass finally: pass except ...