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 ...
随机推荐
- 值不能为 null。 参数名: source
今天调试程序总是报一个异常: 值不能为 null.参数名: source 异常详细信息: System.ArgumentNullException: 值不能为 null.参数名: source 通过断 ...
- 【hyperscan】示例解读 pcapscan
示例位置: <hyperscan source>/examples/pcapscan.cc参考:http://01org.github.io/hyperscan/dev-reference ...
- angularJS详解
这篇文章转载 kooky798 的博客,http://blog.csdn.net/yy374864125/article/details/41349417, 写到这么详细也是没谁了,必须粉一个 1 ...
- jspm 简介
借鉴:http://www.jianshu.com/p/4aba847b3e8c 功能 1. 支持加载JavaScript各种模块化的写法:AMD.CommonJS.标准化的ES6模块... 2. 包 ...
- 【sping揭秘】4、某些无法注册到IOC容器的对象如何交给spring托管
可以实现spring的factoryBean 接口,这样可以加入spring的IOC容器 比如现在有一个类叫MyObject,我们没有这个对象的源码,无法对这个对象进行操作,那么我们如何加入sprin ...
- DockPanel与GeckoFX、ChrominumFX、CefSharp结合使用问题
在使用DockPanel与ChrominumFx时,当在以下条件下拖动窗体时,会发生ChromiumWebBrowser崩溃的情况,此种情况也会在DockPanel与GeckoFX或CefSharp结 ...
- Excel的合并解析
相关文件我放到如下链接: http://files.cnblogs.com/files/DreamDrive/Excel%E5%90%88%E5%B9%B6%E8%A7%A3%E6%9E%90.rar ...
- C#:自定义函数
将数组转成字符串 /// <summary> /// 将数组转成字符串 /// </summary> /// <param name="glue"&g ...
- JavaScript -- Enumerator
-----022-Enumerator.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=&q ...
- 前端通信:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布
距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的 ...