Javascript jQuery:访问具有特定日期和文本的数字字符串的总和
我有这个字符串:Javascript jQuery:访问具有特定日期和文本的数字字符串的总和,javascript,jquery,string,sum,Javascript,Jquery,String,Sum,我有这个字符串: var result = " / 07-09-2012 73 ABC / 11-09-2012 195 DEF/ 03-09-2012 95 / 04-09-2012 188 ABC / 31-10-2012 72 / 18-09-2012 205 / 26-09-2012 244 ABC / 14-09-2012 86 / 20-09-2012 92 DEF / 28-09-2012 97 / 01-09-2012 95 DEF/ 17-09-2012 95 / 17-09-
var result = " / 07-09-2012 73 ABC / 11-09-2012 195 DEF/ 03-09-2012 95 / 04-09-2012 188 ABC / 31-10-2012 72 / 18-09-2012 205 / 26-09-2012 244 ABC / 14-09-2012 86 / 20-09-2012 92 DEF / 28-09-2012 97 / 01-09-2012 95 DEF/ 17-09-2012 95 / 17-09-2012 83 / 12-09-2012 95 / 18-09-2012 95 ABC / 18-09-2012 69 / 21-09-2012 95 / 21-09-2012 95 ABC/ 24-09-2012 144 / 28-09-2012 93 DEF";
字符串分为3类
var result=“/07-09-2012 73/11-09-2012 195/03-09-2012 95/04-09-2012 188/31-10-2012 72/18-09-2012 205/26-09-2012 244/14-09-2012 86/20-09-2012 92/28-09-2012 97/01-09-2012 95/17-09-2012 83/12-09-2012 95/18-09-2012 95-09-2012 95/18-09-2012 95/19-09-2012 95/21-09-2012 95/24-09-2012-144/2012-09-144-93”;
var resultar=result.split('/');
var结果={}//按月计算
对于(var i=0;i=11){//它有日期
var resultTkn=resultArr[i]。拆分(“”);
如果(resultTkn[1].length==10){//这是一个日期
var date=resultTkn[1]。拆分('-');
var总和=0;
if(results.hasOwnProperty(日期[1])){
总和=结果[日期[1];
}
sum+=parseFloat(resulttn[2]);
结果[日期[1]]=总和;
}
}
}
$('div').text(结果[“09”])
现在,我怎样才能做同样的事情,但是用特定字符检索特定日期或月份的总和。
这是我目前对琴弦的拨弄:
比如:results[“09/2012,ABC”]
怎么样:
function search(result, cat) {
var data = [],
lines = result.split(/\s*\/\s*/);
for (var i = 0; i < lines.length; i++) {
if (lines[i] === "") continue;
var s = lines[i].split(/\s+/);
data.push({
date: s[0],
number: parseInt(s[1], 10) || 0,
char: s[2] || ""
});
}
var num = 0;
for (var j = 0; j < data.length; j++) {
if ((cat.char && data[j].char === cat.char) &&
(cat.date && data[j].date.indexOf(cat.date) !== -1)) {
num += data[j].number;
}
}
return num;
}
var result = " / 07-09-2012 73 ABC / 11-09-2012 195 DEF/ 03-09-2012 95 / 04-09-2012 188 ABC / 31-10-2012 72 / 18-09-2012 205 / 26-09-2012 244 ABC / 14-09-2012 86 / 20-09-2012 92 DEF / 28-09-2012 97 / 01-09-2012 95 DEF/ 17-09-2012 95 / 17-09-2012 83 / 12-09-2012 95 / 18-09-2012 95 ABC / 18-09-2012 69 / 21-09-2012 95 / 21-09-2012 95 ABC/ 24-09-2012 144 / 28-09-2012 93 DEF";
var total = search(result, {
char: "ABC",
date: "-09-2012"
});
console.log(total);
功能搜索(结果,cat){
var数据=[],
行=结果。拆分(/\s*\/\s*/);
对于(变量i=0;i
演示:你想做什么,你想如何选择你的输入???当前如果你选中此项:我将获得具有特定月份的所有数字的总和。现在,我想获得具有特定月份和字符的所有数字的总和。我想你应该使用正则表达式来匹配你想要的模式,只要将正则表达式作为输入传递即可可以得到所有字符的特定日期的总和吗?所以基本上是09-2012的总和
function search(result, cat) {
var data = [],
lines = result.split(/\s*\/\s*/);
for (var i = 0; i < lines.length; i++) {
if (lines[i] === "") continue;
var s = lines[i].split(/\s+/);
data.push({
date: s[0],
number: parseInt(s[1], 10) || 0,
char: s[2] || ""
});
}
var num = 0;
for (var j = 0; j < data.length; j++) {
if ((cat.char && data[j].char === cat.char) &&
(cat.date && data[j].date.indexOf(cat.date) !== -1)) {
num += data[j].number;
}
}
return num;
}
var result = " / 07-09-2012 73 ABC / 11-09-2012 195 DEF/ 03-09-2012 95 / 04-09-2012 188 ABC / 31-10-2012 72 / 18-09-2012 205 / 26-09-2012 244 ABC / 14-09-2012 86 / 20-09-2012 92 DEF / 28-09-2012 97 / 01-09-2012 95 DEF/ 17-09-2012 95 / 17-09-2012 83 / 12-09-2012 95 / 18-09-2012 95 ABC / 18-09-2012 69 / 21-09-2012 95 / 21-09-2012 95 ABC/ 24-09-2012 144 / 28-09-2012 93 DEF";
var total = search(result, {
char: "ABC",
date: "-09-2012"
});
console.log(total);