如何用js合并相同的手机号码 本帖最后由 Opera_mini 于 2013-03-13 11:06:55 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var a=[];for(var i in phonenumbers){a[phonenumbers[i]]=1;}for(var i in a){document.write(a[i]);}看看大体这样可以不 <script type="text/javascript">function formSubmit(){ var phoneStr = "13613965892,2分31秒13613965892,38秒13613965892,10分14秒37163786399,46秒" + "13633889873,6分52秒37163670465,45秒18896841667,4分25秒13460683584,8分58秒13101719511,1分38秒13066114220,2分19秒" + "15324989579,15秒15324989579,10秒13613965892,3分26秒13101719511,2分20秒15803889653,1分20秒13066114220,30秒15803889653,2分24秒" + "13613965892,2分24秒15803889653,1分25秒13101719511,29秒15803889653,1分57秒15803889653,2分1秒15803889653,1分54秒" + "13101719511,26秒13613965892,31秒15803889653,1分16秒15515689780,2分44秒18337171792,16秒13613965892,14分33秒" + "15803889653,6分33秒18221496900,1分10秒15938552013,1分0秒13101719511,1分13秒15803889653,5分30秒15803889653,3分6秒13101719511,12秒" + "37163786399,1分29秒13613965892,3分29秒18337171792,1分54秒18337171792,33秒" ; var phoneArray = new Array(); var timeArray = new Array(); var existsArray = new Array(); var valueStr = "" ; phoneArray = phoneStr.split("秒"); for (var i = 0 ; i < phoneArray.length -1 ; i++){ var k = 0 ; for ( ; k < existsArray.length ; k++){ if (phoneArray[i].split(",")[0] == existsArray[k]){ break ; }else { continue ; } } if (k >= existsArray.length){ existsArray.push(phoneArray[i].split(",")[0]); timeArray.push(phoneArray[i].split(",")[1]); }else { timeArray[k] = timeArray[k] + "#" + phoneArray[i].split(",")[1] ; } } for (var j = 0 ; j < existsArray.length ; j++){ valueStr = valueStr + existsArray[j] + "," + formatTime(timeArray[j]) + "<br />" ; //alert(existsArray[j]); //alert(timeArray[j]); } document.getElementById("txt1").innerHTML = valueStr ; }; function formatTime(value){ var valueArray = value.split("#"); var second = 0 ; if (valueArray.length > 1){ for (var i = 0 ; i < valueArray.length ; i++){ if (valueArray[i].split("分").length > 1){ second = second + ( parseInt(valueArray[i].split("分")[0], 10) * 60 ) + parseInt(valueArray[i].split("分")[1], 10) ; }else { second = second + parseInt(valueArray[i], 10) ; } } }else { return valueArray[0] + "秒"; } if (parseInt(second/60 , 10) == 0){ return second + "秒" ; }else { return parseInt(second/60 , 10) + "分" + second%60 + "秒" ; } }; </script><body> <div id="txt1"></div></body> <div id="test">13613965892,2分31秒13613965892,38秒13613965892,10分14秒37163786399,46秒13633889873,6分52秒37163670465,45秒18896841667,4分25秒13460683584,8分58秒13101719511,1分38秒13066114220,2分19秒15324989579,15秒15324989579,10秒13613965892,3分26秒13101719511,2分20秒15803889653,1分20秒13066114220,30秒15803889653,2分24秒13613965892,2分24秒15803889653,1分25秒13101719511,29秒15803889653,1分57秒15803889653,2分1秒15803889653,1分54秒13101719511,26秒13613965892,31秒15803889653,1分16秒15515689780,2分44秒18337171792,16秒13613965892,14分33秒15803889653,6分33秒18221496900,1分10秒15938552013,1分0秒13101719511,1分13秒15803889653,5分30秒15803889653,3分6秒13101719511,12秒37163786399,1分29秒13613965892,3分29秒18337171792,1分54秒18337171792,33秒</div><script type="text/javascript"> var fnStr2Time = function(str){ var str = str.match(/^(?:(\d+)分)?(\d+)秒$/), m, s = 0; if( str ){ m = +str[1]; s = +str[2]; } if( m ){ return m * 60 + s; } return s; }; var fnTime2Str = function(n){ var m = parseInt(n/60), s = n % 60; return (m?m+'分':'')+s+'秒'; }; var str = document.getElementById('test').innerHTML; str = str.match(/.+?(?=\s+)/g); var obj = {}, tmp; for(var i = 0, len = str.length; i < len; i++){ tmp = str[i].split(','); if( obj[tmp[0]] ){ obj[tmp[0]] += fnStr2Time(tmp[1]); }else{ obj[tmp[0]] = fnStr2Time(tmp[1]); } } str = ''; for(var x in obj){ str += x + ',' + fnTime2Str(obj[x]) + '\n'; } document.getElementById('test').innerHTML = str; </script>这个意思? 这个existsArray之前都没有赋值,怎么就 k < existsArray.length 了呢? 没有附值的情况下 existsArray.length 就是 0 呀?你不是要去掉重复,然后重复的把分和秒都加到一起呀!你看结果对不对。13613965892,37分46秒37163786399,2分15秒13633889873,6分52秒37163670465,45秒18896841667,4分25秒13460683584,8分58秒13101719511,6分18秒13066114220,2分49秒15324989579,25秒15803889653,27分26秒15515689780,2分44秒18337171792,2分43秒18221496900,1分10秒15938552013,1分0秒 用了FireBug调试了,但是没有任何错误提示。 当然没有错误提示了。我写的本身就是测试过的。你不就是想要去掉重复和把重复的加到一起呀。<button onclick="formSubmit();">获取</button>执行一下我写的方法就行了啊!你看看是不是你想要的结果。 var str="shouji.秒|| shouji.秒|| shouji.秒 "strlist=str.split("||").sort();for(){}//这里循环去掉重复值,把秒加起来或取最小值都行手机打的,这里就没有for了 jquery查找元素并修改的问题 动态显示树形菜单,数据也传输过去了。但是就是点击的时间不显示出来。 js的一个小问题 函数返回值问题 给Ext.menu.Menu动态添加item出错 求购两本JS二手书 我用框架做网页,分上中下,上和下页是不变的,就是变中间。js里应要怎样写呢?而且中间页还有好多处连接。 这个问题很难吗?(需要来探讨,探讨) easyui combobox 下拉项无法选中的问题 如果让图片从左向右滚动 求DIV从一个区块拖放到另一个区块的JS代码!同学们进来看看 求助!求助!jquery weebox 在IE下面弹框总是加载不了
for(var i in phonenumbers){
a[phonenumbers[i]]=1;
}
for(var i in a){
document.write(a[i]);
}
看看大体这样可以不
<script type="text/javascript">
function formSubmit(){
var phoneStr = "13613965892,2分31秒13613965892,38秒13613965892,10分14秒37163786399,46秒" +
"13633889873,6分52秒37163670465,45秒18896841667,4分25秒13460683584,8分58秒13101719511,1分38秒13066114220,2分19秒" +
"15324989579,15秒15324989579,10秒13613965892,3分26秒13101719511,2分20秒15803889653,1分20秒13066114220,30秒15803889653,2分24秒" +
"13613965892,2分24秒15803889653,1分25秒13101719511,29秒15803889653,1分57秒15803889653,2分1秒15803889653,1分54秒" +
"13101719511,26秒13613965892,31秒15803889653,1分16秒15515689780,2分44秒18337171792,16秒13613965892,14分33秒" +
"15803889653,6分33秒18221496900,1分10秒15938552013,1分0秒13101719511,1分13秒15803889653,5分30秒15803889653,3分6秒13101719511,12秒" +
"37163786399,1分29秒13613965892,3分29秒18337171792,1分54秒18337171792,33秒" ;
var phoneArray = new Array();
var timeArray = new Array();
var existsArray = new Array();
var valueStr = "" ;
phoneArray = phoneStr.split("秒");
for (var i = 0 ; i < phoneArray.length -1 ; i++){
var k = 0 ;
for ( ; k < existsArray.length ; k++){
if (phoneArray[i].split(",")[0] == existsArray[k]){
break ;
}else {
continue ;
}
}
if (k >= existsArray.length){
existsArray.push(phoneArray[i].split(",")[0]);
timeArray.push(phoneArray[i].split(",")[1]);
}else {
timeArray[k] = timeArray[k] + "#" + phoneArray[i].split(",")[1] ;
}
}
for (var j = 0 ; j < existsArray.length ; j++){
valueStr = valueStr + existsArray[j] + "," + formatTime(timeArray[j]) + "<br />" ;
//alert(existsArray[j]);
//alert(timeArray[j]);
}
document.getElementById("txt1").innerHTML = valueStr ;
};
function formatTime(value){
var valueArray = value.split("#");
var second = 0 ;
if (valueArray.length > 1){
for (var i = 0 ; i < valueArray.length ; i++){
if (valueArray[i].split("分").length > 1){
second = second + ( parseInt(valueArray[i].split("分")[0], 10) * 60 ) + parseInt(valueArray[i].split("分")[1], 10) ;
}else {
second = second + parseInt(valueArray[i], 10) ;
}
}
}else {
return valueArray[0] + "秒";
}
if (parseInt(second/60 , 10) == 0){
return second + "秒" ;
}else {
return parseInt(second/60 , 10) + "分" + second%60 + "秒" ;
}
};
</script><body>
<div id="txt1"></div>
</body>
13613965892,2分31秒
13613965892,38秒
13613965892,10分14秒
37163786399,46秒
13633889873,6分52秒
37163670465,45秒
18896841667,4分25秒
13460683584,8分58秒
13101719511,1分38秒
13066114220,2分19秒
15324989579,15秒
15324989579,10秒
13613965892,3分26秒
13101719511,2分20秒
15803889653,1分20秒
13066114220,30秒
15803889653,2分24秒
13613965892,2分24秒
15803889653,1分25秒
13101719511,29秒
15803889653,1分57秒
15803889653,2分1秒
15803889653,1分54秒
13101719511,26秒
13613965892,31秒
15803889653,1分16秒
15515689780,2分44秒
18337171792,16秒
13613965892,14分33秒
15803889653,6分33秒
18221496900,1分10秒
15938552013,1分0秒
13101719511,1分13秒
15803889653,5分30秒
15803889653,3分6秒
13101719511,12秒
37163786399,1分29秒
13613965892,3分29秒
18337171792,1分54秒
18337171792,33秒
</div>
<script type="text/javascript">
var fnStr2Time = function(str){
var str = str.match(/^(?:(\d+)分)?(\d+)秒$/),
m, s = 0;
if( str ){
m = +str[1];
s = +str[2];
}
if( m ){
return m * 60 + s;
}
return s;
};
var fnTime2Str = function(n){
var m = parseInt(n/60),
s = n % 60;
return (m?m+'分':'')+s+'秒';
};
var str = document.getElementById('test').innerHTML;
str = str.match(/.+?(?=\s+)/g);
var obj = {},
tmp;
for(var i = 0, len = str.length; i < len; i++){
tmp = str[i].split(',');
if( obj[tmp[0]] ){
obj[tmp[0]] += fnStr2Time(tmp[1]);
}else{
obj[tmp[0]] = fnStr2Time(tmp[1]);
}
}
str = '';
for(var x in obj){
str += x + ',' + fnTime2Str(obj[x]) + '\n';
}
document.getElementById('test').innerHTML = str;
</script>
这个意思?
13613965892,37分46秒
37163786399,2分15秒
13633889873,6分52秒
37163670465,45秒
18896841667,4分25秒
13460683584,8分58秒
13101719511,6分18秒
13066114220,2分49秒
15324989579,25秒
15803889653,27分26秒
15515689780,2分44秒
18337171792,2分43秒
18221496900,1分10秒
15938552013,1分0秒
你不就是想要去掉重复和把重复的加到一起呀。
<button onclick="formSubmit();">获取</button>
执行一下我写的方法就行了啊!你看看是不是你想要的结果。
strlist=str.split("||").sort();
for(){}//这里循环去掉重复值,把秒加起来或取最小值都行
手机打的,这里就没有for了