js中如何处理多个map,请看下需求
现需求如下,
js里看有四个map,现在要第一个map位基准,把另外三个map的数据整第一个map中
里面的数据格式如下
第一个map
key value
2010 1
2011 1
第二个map
key value
2011 2
2012 2
第三个map
key value
2011 3
2012 3
第四个map
key value
2012 4
2013 4
最后要的效果就是
2010 1
2011 6
2012 9
2013 4
一定要以第一个map位基础,把另外三个整合进去,如果key相同的 就做个相加 ,如果key不同的,增加一行显示
[解决办法]
我还以为是地图的map.
[解决办法]
<script type="text/javascript">
<!--
var maps=[];
maps.push({"2010":1 , "2011":1});
maps.push({"2011":2 , "2012":2});
maps.push({"2011":3 , "2012":3});
maps.push({"2012":3 , "2014":3});
var result ={};
for(var i=0;i<maps.length;i++){
var map= maps[i];
for(var key in map){
result[key] =(result[key]
[解决办法]
0) + map[key];
}
}
var ss="";
for(var key in result){
ss+= key +" "+ result[key] +"\n";
}
alert(ss);
//-->
</script>
var map1=[
{k:'2010',v:1},
{k:'2011',v:1}
];
var map2=[
{k:'2011',v:2},
{k:'2012',v:2}
];
var map3=[
{k:'2011',v:3},
{k:'2012',v:3}
];
var map4=[
{k:'2012',v:4},
{k:'2013',v:4}
];
function Stat(){
var d=[];
this.add=function(){
for(var i=0;i<arguments.length;i++)
d.push.apply(d,arguments[i]);
}
this.result=function(){
var o={},re=[];
for(var i=0;i<d.length;i++){
var v=d[i];
o[v.k]=(o[v.k]
[解决办法]
0)+v.v;
}
for(var k in o) re.push( new mi(k,o[k]));
return re;
}
function mi(k,v){
this.toString=function(){return [k,v].join(' ') };
}
}
var stat=new Stat();
stat.add( map1,map2,map3,map4 ); //添加MAP
var re=stat.result();//分析出结果,返回数组
alert( re.join('\n') ); //