javascript
  • jquery
  • html
  • count
  • 2014-11-22 21 views 0 likes 
    0

    代码:从API调用中,我如何获取一个字段并查看该值的重复次数?

    var textArray = new Array(); 
        var allText = results.data._contained.text; 
        for (var i = 0; i < allText.length; i++) { 
         var text1 = allText[i]; 
         var textHtml = "<div id='text_item'>"; 
         textHtml += "<span class='some_div'>{0}</span>".replace("{0}", text1.text_is); 
         textHtml += "</div>"; 
         textArray.push(text1.texts.priority); 
    
         $("#text_box").append(textHtml); 
        } 
    
        if (foo === 'Some text') { 
         document.write("match"); 
        } else { 
         document.write("not match"); 
        } 
    
    } 
    

    我有工作正常上述逻辑,但我坚持的东西我没有做过的事情。

    这就是我想做的事:

    .some_div将包含字符串值跨度。我想要做的是计算相同的值重复多少次。我怎样才能做到这一点?

    例如:让我们说的价值是“医药”,它在.some_div独立重复10次。我怎样才能返回它重复了多少次?

    +0

    你可能想发布的详细信息,以便我们能够重现的场景,它是不明确(至少对我来说)你正在尝试做 – Tomanow 2014-11-22 21:03:39

    +0

    @Tomanow刚刚更新我的描述。谢谢! :) – KPO 2014-11-22 21:07:23

    回答

    0

    如果text1.text_is(它是.some_div范围的内容)是String类型,则可以使用String.split函数来实现该功能。

    var wordsCount = {}; 
    var allWords = text1.text_is.split(" ") //split by space or the delimiter of the words. 
    for (var i = 0, l = allWords.length; i < l; i++) 
    { 
        var word = allWords[i]; 
        wordsCount[word] = (wordsCount[word] || 0) + 1; 
    } 
    

    好运

    +0

    是的,但在这种情况下,你指定“医药”的价值观是动态的,所以我需要能够动态地做到这一点。 – KPO 2014-11-22 21:22:18

    +0

    你的意思是你需要统计字符串中每个单词的重复次数? – 2014-11-22 21:25:39

    +0

    Yees,让我们说我有这医学东西我想能够说医学重复了2次,而且重复了一次。 – KPO 2014-11-22 21:26:38

    0

    最有效,最便捷的方式做到这一点是使用string.match()使用正则表达式。这具有允许不区分大小写的附加好处。

    function countWords(text) { 
     
        var resultArray = []; 
     
        var text = $(".some_div").text(); //store the original text 
     
        text = text.replace(/\W/g, " "); //replace non-alphanumerics with a whitespace 
     
        text = text.replace(/\s{2,}/g, " "); //replace more than one space with a single space 
     
    
     
        while (text.length > 0) { 
     
        var index = text.indexOf(" "); //find the first space 
     
        
     
        if (index === 0) { 
     
         text = text.slice(1, text.length); //this is a leading space, skip it 
     
        } else { 
     
         var wordToMatch = text.slice(0, index); //find the first word 
     
         var regex = new RegExp(wordToMatch, "gi"); //create case-insensitive regular expression with the word 
     
         var wordCount = text.match(regex).length; //get number of word occurences 
     
         resultArray.push({ word: wordToMatch, count: wordCount }); //store the result for this word 
     
         text = text.replace(regex, ""); //remove this word from the input text 
     
         text = text.replace(/\s{2,}/g, " "); //replace more than one space with a single space again 
     
        } 
     
        } 
     
    
     
        return resultArray; 
     
    } 
     
    
     
    countWords($(".some_div").text()).forEach(function(item) { 
     
        $("#result").append(item.word + ": " + item.count + "<br/>"); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
     
    <span class='some_div'>The field of Medicine is a medicine Field</span> 
     
    <br/> 
     
    <div id="result"></div>

    相关问题