【问题标题】:String split and count the total sum of strings with number字符串拆分并计算带有数字的字符串的总和
【发布时间】:2016-10-13 09:56:34
【问题描述】:

我正在尝试对这个长字符串进行字符串拆分,并计算所有出现的次数,并对相同字符串拆分的 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>

我正在为这段代码苦苦挣扎:

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 + "; ");
}

问题是虽然它在理论上有效,但是当字符串太长时,就像上面发布的那样,一些字符串拆分被求和忽略了。 Orange Red and Blue 的总和不正确。

Codepen code here!

请帮忙,我怎样才能修复这个功能来正确地总结我的字符串拆分。

【问题讨论】:

    标签: jquery object text split counter


    【解决方案1】:

    试试这样的:

    首先我在; 上添加了split,然后在第二次拆分中添加到x,并将第一行添加到总数中。

    创建一个关联数组以保存每个键的总数。并使用Object.keys(array).forEach(function(key, index) {},array); 方法或for(var key in array){} 在这个数组中循环

    var array = $("#all").text().split(';');
    var total=0;
    var colorarray = new Array();
    $.each(array,function(key,value){
    if(value!='')
    {
      if(colorarray[value.split("x")[1]]==undefined)
      {
         colorarray[value.split("x")[1]]=0;
      }
      
      var itemnumber = parseInt(value.split("x")[0]);
      colorarray[value.split("x")[1]]+=(itemnumber);
      total+=(itemnumber);
    }
    });
    
    for(var key in colorarray)
    {
      $("#total").append("<div>"+key+" : "+colorarray[key]+"</div>");
    };
    
    $("#total").append("<div>total :"+total+"</div>");
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <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>

    【讨论】:

    • 这实际上工作得很好,但我仍然需要字符串拆分的第二部分,在这种情况下 (xOrange, xBlue, xRed) 我打算得到每个橙色、蓝色和红色的总和
    • 是的,你做到了:)! ,像魅力一样工作,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2020-06-03
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多