第一:{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。
var LangShen = {"Name":"Langshen","AGE":"28"};
访问格式(两种): 第一种:LangShen.Name LangShen.AGE,
第二种:LangShen["Name"] LangShen["AGE"]
该写法,在JSON数据结构中经常用。
JS对象常用的第一种情况:
例如: 姓名 性别 年龄
小明 男 20
小虎 男 22
小花 女 21
要求 男女分为 两类
[{男},{女}]
var data=[{'name':'小明','sex':'boy','age':20},{'name':'小虎','sex':'boy','age':22},{'name':'小花','sex':'girl','age':21}]
var person={};
for(var i=0;i
if(!person[obj.sex]){
person[obj.sex]=[];
}
person[obj.sex].push(obj);
}
console.log(person);对象里面放着两个数组(一男,一女)
Object { boy: Array[2], girl: Array[1] }
console.log(person.boy);性别为男的 数组
Array [ Object, Object ]
for(var j=0;j
alert(k.name+":"+k.sex+":"+k.age);
}
如果没有boy创建一个
如果没有girl船建一个
如果有 判断是boy 还是girl 分别转入不同容器
JS对象常用的第二种情况:
var data=[
{'year':'2015','month':'2','type':'大号','total':2},
{'year':'2015','month':'2','type':'大号','total':7},
{'year':'2015','month':'6','type':'大号','total':3},
{'year':'2016','month':'5','type':'小号','total':4},
{'year':'2016','month':'5','type':'小号','total':5},
{'year':'2016','month':'5','type':'小号','total':2},
{'year':'2016','month':'6','type':'中号','total':8},
]
整体思路 找出最小日期 找出最大日期
必须一: 定义数组: 承装结果 var result=[];遍历数组 var index=0;(必不可少)
必须二: 定义 (所需要的格式)r
必须三: 确定循环条件: 小于最大日期: 注意:小于最大 条件一:年小于最大日期的年 或者
条件二:年相等月小于最大日期的月
必须四: 当满足什么条件的时候data中的值赋予r (怎么给)
遍历数组 循环给值
while(curYear < endyear || (curYear == endyear && curMonth <= endmonth)){
var r = {'year': curYear, 'month':curMonth, 'types':{},'total': 0};
if(index < data.length && r.year == data[index].year && r.month == data[index].month){
r.total += data[index].total;
r.types[data[index].type + ''] = data[index].total;
index++;
}
else{
break;
}
rpts.push(r);
curMonth++;
if(curMonth > 12){
curYear++;
curMonth = 1;
}
}
while(index
注意:此处出现逻辑错误!!!!!
如果有年月都相等的则month就加1
如果此条记录的下一条记录也是 相同的年月则会出现错误
出现错误的原因:看上面的代码 只要数据库中出现 2015年2月那么month就会+1
下一条数据是:2015年2月 然而他要对比的是2015年3月if()语句就再也进不去了
2015 2
var r={'year':curYear, 'month':curMonth,'type':type{},'total':0}
做成以下样式
year month 小号 中号 大号 total
输入框中的 日期 dtstart 数据库中的日期 data[]
以month作为比较 month++
如果month>12
year++
并且初始化月 month=1;
var dtstart = $('#dtStart').datebox('getValue');
var result={'year':curMonth,'month':curMonth,type{'大号':a,'中号':b,'小号':c,},'total':a+b+c};
如:result.type["大号"]=
如:result.type["中号"]=
如:result.type["小号"]=
if(r == null || r.year != data[i].year || (r.year == data[i].year && r.quarter != quarter)){
r = {'year': data[i].year,'quarter':quarter, 'types':{"1":0,"2":0},'total': data[i].total};
if(data[i].types["1"]!=null){
//对象取值 可以是. 也可以是[属性名]
r.types["1"] =data[i].types["1"];
}
if(data[i].types["2"]!=null){
r.types["2"] =data[i].types["2"];
}
rpts.push(r);
}
else{
r.total += data[i].total;
if(data[i].types["1"]!=null){
r.types["1"] +=data[i].types["1"];
}
if(data[i].types["2"]!=null){
r.types["2"] +=data[i].types["2"];
}
}