求js一算法:如下数组长度一样
var arrName = new Array('A','C','D','A','C','B'.....)
var arrCount = new Array('20','30','40','20','60','10'.....)
var arrFlag = new Array('true','false','true','false','false','true'.....)arrName数组中找出相同的名称,汇总arrCount对应的项,arrFlag为标记条件
即使arrName名称相同如果arrFlag不相同则当做别一名称。最终结为
arrName : A-true,A-false,B-true,c-false
arrCount: 20 , 40, 60, 90
var arrName = new Array('A','C','D','A','C','B'.....)
var arrCount = new Array('20','30','40','20','60','10'.....)
var arrFlag = new Array('true','false','true','false','false','true'.....)arrName数组中找出相同的名称,汇总arrCount对应的项,arrFlag为标记条件
即使arrName名称相同如果arrFlag不相同则当做别一名称。最终结为
arrName : A-true,A-false,B-true,c-false
arrCount: 20 , 40, 60, 90
是每个数组都一一对应吗?
还有你这个设计不到算法吧!就是循环找到数组相同的元素,先把arrName 与arrFlag 合并成一个数组
!然后数组内循环,在循环过程中移除一样的数组元素,如果数组超过千条!用js是没办法解决的,会报告js错误!因为那样的话循环次数太多了!超过了处理能力!
var arrName = new Array('A','C','D','A','C','B')
var arrCount = new Array('20','30','40','20','60','10')
var arrFlag = new Array('true','false','true','false','false','true')
var obj = {};
var len = arrName.length;
for(var i=0;i<len;i++)
{
var arr = arrName[i]+"-"+arrCount[i]+arrFlag[i];
if(!obj[arr])
obj[arr]='';
}var str = new Array();
for(var key in obj)
str.push(key);
str.sort();
document.write(str.join("<br />"));
var arrName = new Array('A','C','D','A','C','B')
var arrCount = new Array('20','30','40','20','60','10')
var arrFlag = new Array('true','false','true','false','false','true')
var NewArr= new Array();
/*把原来的数组合并成新数组*/
for(var i=0;i<arrName.length;i++)
{
NewArr[i]=arrName[i]+"-"+arrFlag[i];
NewArr[i].prototype.Count=arrCount[i];
}
arrName.length=0;//清空arrName数组
NewArr.sort(); //NewArr排序以便优化程序
/*删除原来重复数组元素,并把同样元素的Count值相加保存在数组属性中*/
for(var i=NewArr.length;i>0;i--)
{
if(NewArr[i]==NewArr[i-1])
{
NewArr[i-1].Count=(parsInt(NewArr[i].Count)+parsInt(NewArr[i-1].Count)).toString();
NewArr.remove(i);//或者NewArr.splice(i-1,1)
}
}
arrCount.length=0;//清空arrCount数组
/*构造结果数组*/
for(var i;i<NewArr.length;i++)
{
arrName[i]=NewArr[i];
arrCount[i]=NewArr[i].Count;}