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 ...
随机推荐
- JavaScript中标识符的命名
JavaScript中的标识符的命名有以下规则: 由字母.数字.$._组成 以字母.$._开头 不可以使用保留字!!! 要有意义!!!!!!! 标识符的命名规范: 1.驼峰命名法 除标识符的第一个单词 ...
- python收集jvm数据
之前前辈用 java 写的收集 jvm 脚本, 不太方便组内小伙伴维护, 遂用 python 重写了 #!/usr/bin/env python # -*- coding: utf-8 -*- # F ...
- Swift5 语言指南(二十四) 泛型
通用代码使您能够根据您定义的要求编写可以使用任何类型的灵活,可重用的函数和类型.您可以编写避免重复的代码,并以清晰,抽象的方式表达其意图. 泛型是Swift最强大的功能之一,Swift标准库的大部分内 ...
- Vue项目打包常见问题整理
Vue 项目在开发时运行正常,打包发布后却出现各种报错,这里整理一下遇到的问题,以备忘. 1.js 路径问题 脚手架默认打包的路径为绝对路径,改为相对路径.修改 config/index.js 中 b ...
- 剑指offer十六之合并两个排序的链表
一.题目 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 二.思路 注:链表1和链表2是两个递增排序的链表,合并这两个链表得到升序链表为链表3. 首先分析 ...
- vector源码1(参考STL源码--侯捷):源码
vector源码1(参考STL源码--侯捷) vector源码2(参考STL源码--侯捷) vector源码(参考STL源码--侯捷)-----空间分配导致迭代器失效 vector源码3(参考STL源 ...
- 微信小程序开发环境搭建
关注,QQ群,微信应用号社区 511389428 微信小程序可谓是今天最火的一个名词了,一经出现真是轰炸了整个开发人员,当然很多App开发人员有了一个担心,微信小程序的到来会不会给移动端App带来一个 ...
- Gen对于数组Array的处理
举个例子,如下: public void t() { String[][] a = new String[][] { { "x", "y" } }; Strin ...
- 02 - JavaSE之基础及面向对象(补充)
引用数据类型 java中的数据类型可以分为 基本数据类型 和 引用数据类型 两大类 int float char boolean等都是基本数据类型 类类型都是引用数据类型 引用数据类型类似C语言中的指 ...
- Mac OS X 下搭建thrift环境
1.概述 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生产引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...