Jquery 字符串拆分并使用数字计算字符串的总和

Jquery 字符串拆分并使用数字计算字符串的总和,jquery,object,text,split,counter,Jquery,Object,Text,Split,Counter,我正在尝试字符串拆分这个长字符串,并通过求同一字符串拆分的x之前的数字的和来计算所有出现的情况 <div id="all">3xOrange;2xBlue;1xRed;1xRed;1xRed;1xOrange;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xOrange;3xRed;1xBlue;1xRed;2xBlue;

我正在尝试字符串拆分这个长字符串,并通过求同一字符串拆分的
x
之前的数字的和来计算所有出现的情况

<div id="all">3xOrange;2xBlue;1xRed;1xRed;1xRed;1xOrange;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xOrange;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;20xBlue;33xRed;20xBlue;33xRed;2xBlue;3xRed;51xBlue;51xRed;</div>

<b id="total"></b>
问题是,虽然它在理论上是有效的,但当字符串太长时,一些字符串拆分会被suming忽略。
橙红色和蓝色的总和不正确


请帮助,我如何修复此函数以正确求和字符串拆分。

尝试以下操作:

首先,我在
上拆分了
x
进行编码>并将第一行添加到总数中

为“使用总计保存每个关键点”创建关联数组。并使用
Object.keys(数组).forEach(函数(键,索引){},数组)在该数组中循环方法或
用于(数组中的var键){}

var数组=$(“#all”).text().split(“;”);
var合计=0;
var colorarray=新数组();
$.each(数组、函数(键、值){
如果(值!='')
{
if(colorarray[value.split(“x”)[1]]==未定义)
{
colorarray[value.split(“x”)[1]]=0;
}
var itemnumber=parseInt(value.split(“x”)[0]);
colorarray[value.split(“x”)[1]+=(itemnumber);
合计+=(项目编号);
}
});
for(colorarray中的var键)
{
$(“#总计”).append(“+key+”:“+colorarray[key]+”);
};
$(“#总计”)。追加(“总计:+total+”)

3个橙色;2x蓝色;1xRed;1xRed;1xRed;1xOrange;2x蓝色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;2个橙色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;20xBlue;33xRed;20xBlue;33xRed;2x蓝色;3xRed;51xBlue;51xRed;

尝试以下方法:

首先,我在
上拆分了
x
进行编码>并将第一行添加到总数中

为“使用总计保存每个关键点”创建关联数组。并使用
Object.keys(数组).forEach(函数(键,索引){},数组)在该数组中循环方法或
用于(数组中的var键){}

var数组=$(“#all”).text().split(“;”);
var合计=0;
var colorarray=新数组();
$.each(数组、函数(键、值){
如果(值!='')
{
if(colorarray[value.split(“x”)[1]]==未定义)
{
colorarray[value.split(“x”)[1]]=0;
}
var itemnumber=parseInt(value.split(“x”)[0]);
colorarray[value.split(“x”)[1]+=(itemnumber);
合计+=(项目编号);
}
});
for(colorarray中的var键)
{
$(“#总计”).append(“+key+”:“+colorarray[key]+”);
};
$(“#总计”)。追加(“总计:+total+”)

3个橙色;2x蓝色;1xRed;1xRed;1xRed;1xOrange;2x蓝色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;2个橙色;3xRed;1xBlue;1xRed;2x蓝色;3xRed;1xBlue;1xRed;20xBlue;33xRed;20xBlue;33xRed;2x蓝色;3xRed;51xBlue;51xRed;

这实际上工作得很好,但我仍然需要字符串拆分的第二部分,在这种情况下(xOrange、xBlue、xRed),我的目的是得到每个橙色、蓝色和红色的总和:),工作很有魅力,非常感谢!这实际上非常有效,但我仍然需要字符串拆分的第二部分,在这种情况下(xOrange、xBlue、xRed),我的目的是得到每个橙色、蓝色和红色的总和:),工作很有魅力,非常感谢!
var obj = {};

$("#all").text().split(";").forEach(function(text){
  if (text != ""){
    var part = text.split("x");
    obj[part[1]] = obj[part[1]] != undefined ? obj[part[1]]+1 : parseInt(part[0]);
  }
});
for (key in obj) {
  $("#total").append(obj[key] +"×"+ key + "; ");
}