JS 循环问题。
let colArry = [];
let ts_cost = '321##深圳市代理有限公司##{"RMB":"175.00"}||321##深圳市代理有限公司##{"RMB":"175.00"}||321##深圳市代理有限公司##{"RMB":"175.00"}||321##深圳市代理有限公司##{"RMB":"175.00"}';
if(ts_cost && ts_cost !== '') {
const ts_cost_arry = ts_cost.split('||');
let json = {"belong_custom":"", "belong_corp":"", "collection":""};
for(let i=0;i<ts_cost_arry.length;i++){
const [a,b,c] = ts_cost_arry[i].split('##'); //{"RMB":"1111.72","HK":"62.03"}
if(a) {
json.belong_custom = a;
json.belong_corp = b;
json.collection = c;
let find = -1;
console.log(colArry,i);
for (let k = 0,max = colArry.length; k < max; k++) {
if (colArry[k].belong_custom === a && colArry[k].belong_corp === b) {
let oldCol = JSON.parse(colArry[k].collection);
let newCol = JSON.parse(c);
for(let key in newCol){
if(parseFloat(newCol[key])!==0 && newCol.hasOwnProperty(key)){
if(oldCol[key]) {
oldCol[key] = parseFloat(oldCol[key]) + parseFloat(newCol[key]);
}else {
oldCol[key] = newCol[key];
}
}
}
json.collection = JSON.stringify(oldCol);
find = k;
break;
}
}
if(find>=0) colArry.splice(find,1,json);
else colArry.push(json);
colArry[0].title = i;
console.log(colArry,'end');
}
}
}
其实就是判断字符串用##分隔的第一个数值和第二个数值相同的,就合并第三个数值中相同币制的金额。
[] 0
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":"175.00"}',
title: 0 } ] 'end'
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":"175.00"}',
title: 0 } ] 1
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":350}',
title: 1 } ] 'end'
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":"175.00"}',
title: 1 } ] 2
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":350}',
title: 2 } ] 'end'
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":"175.00"}',
title: 2 } ] 3
[ { belong_custom: '321',
belong_corp: '深圳市代理有限公司',
collection: '{"RMB":350}',
title: 3 } ] 'end'
上面是调试结果, 可以看到i为1时,金额已经累加到350了, 但在i为2时, 取值时金额又变成175了, 百思不得其解, 请指点!
200分奉上。
...全文
相关推荐
深入探究JavaScript中for循环的效率问题及相关优化
主要介绍了JavaScript中for循环的效率问题及相关优化,文中谈到了Underscore.js库及循环在各个浏览器js解释器下的表现,需要的朋友可以参考下
js 优化次数过多的循环 考虑到性能问题
假设要生成一千万个随机数,常规的做法如下: 代码如下: var numbers = []; for (var i = 0; i < 10000000; i++) { numbers.push(Math.random()); } 然而,在IE下执行这段代码时,却弹出了一个窗口提示用户是否停止这段脚本。出现这种情况,首先想到的是优化循环体。但明显地,循环体很简单,没什么优化的余地。即使把循环体清空,提示仍然存在。于是,我得出了一个结论:在IE下,一旦循环次数超过了某个特定值,就会弹出停止脚本的提示。 原因找到了,该如何解决呢?我首先想到的是把一千万次循环分成若干个次数较少的循环。比如分成一
js代码-for循环问题
js代码-for循环问题
javascript 使用for循环时该注意的问题-附问题总结
所谓for循环就是重复的执行一段代码,for循环也是希望在创建循环时常会用到的工具,这篇内容主要给大家介绍javascript 使用for循环时该注意的问题-附问题总结,需要的朋友可以参考下
JavaScript的for循环中嵌套一个点击事件的问题解决
本文主要介绍了JavaScript的for循环中嵌套一个点击事件点击一次弹出多个相同的值的解决方法,具有很好的参考价值。下面跟着小编一起来看下吧


