首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js中如何避免多个地图,请看下需求

2013-08-10 
js中如何处理多个map,请看下需求现需求如下,js里看有四个map,现在要第一个map位基准,把另外三个map的数据

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') ); //


[解决办法]
有没有重复,记录数多少都没关系,你测一下就知道了
[解决办法]
引用:
谢谢你,不过现在如果假定我不知道另外三个map里面的数据有多少,也不知道是否有重复的key的,这样怎么处理呢,我自己考虑过,好像是要考虑很多种情况,没想到好的方法


你测试过再说好吗?

热点排行
Bad Request.