Javascript 获取逗号后最常见的文本字符串,用于任何用途

Javascript 获取逗号后最常见的文本字符串,用于任何用途,javascript,html,jquery,Javascript,Html,Jquery,我想抓住下面代码中最常见的文本,在这个带有Jquery的HTML中的“,”之后。在这种情况下,文本将返回“Bothell”。我该怎么做呢 <a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a> <a href="/search/details/50/1/" class="address">9207 Odin Wy, Bellevue</a> <a hr

我想抓住下面代码中最常见的文本,在这个带有Jquery的HTML中的“,”之后。在这种情况下,文本将返回“Bothell”。我该怎么做呢

<a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>
<a href="/search/details/50/1/" class="address">9207 Odin Wy, Bellevue</a>
<a href="/search/details/50/1/" class="address">9207 Odin Wy, Kirkland</a>
<a href="/search/details/50/1/" class="address">9207 Odin Wy, Monroe</a>
<a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>
<a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>
<a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>

您必须在此处执行多项操作:

  • 提取名称
  • 计数事件
  • 得到一个最高的结果
  • 下面是一个基于上述输入的快速代码。请注意,这不考虑多个逗号出现,但我认为您已经可以调整下一步需要什么。p>
    你知道以后该怎么办。祝你好运

    我会创建一个城镇名称计数图,然后按计数降序排序,并提取第一个元素

    如果希望在链接文本中有其他要忽略的元素,可以通过克隆元素、迭代子元素并从克隆中删除每个元素来删除这些元素。使用克隆将保持页面外观不变

    let As=document.getElementsByTagName('a');
    让城镇=新地图();
    例如
    {
    设aClone=a.cloneNode(true);
    […aClone.childs].forEach(kid=>aClone.removeChild(kid));
    让town=aClone.textContent.split(',)[1].trim()
    if(城镇。has(城镇))
    {
    城镇。集合(城镇,城镇。获取(城镇)+1)
    }
    其他的
    {
    城镇。集合(城镇,1);
    }
    }
    让most=[…towns.entries()]进行排序((a,b)=>b[1]-a[1])[0]
    控制台日志(most)
    
    
    
    哇,非常感谢。如果有这么多的a标签呢?我希望能够在DOM上显示的标记数量内进行计数。非常感谢。这个和那个应该配合得很好。请注意,如果使用jQuery,则可以使用
    .text()
    属性提取所有文本。因此,只需获取
    $('a')
    所有锚点,循环遍历它们,将
    .text()
    放入一个数组,然后使用上面的代码片段。:)“遍历它们以获取.text()”-使用jquery.mapI从未使用过jquery映射。所以我不知道该怎么做。。。我还是个新手。谢谢你的反馈,从哪里开始!我使用了你的代码,只是做了一点小小的改动。原来的也不管用。我将代码粘贴到原始注释中。您有什么问题?你似乎改变了你原来的问题。实际上我让它工作了,但它返回“Bothell,4”。我对这个很陌生,我怎么能让它显示“Bothell”而不是添加计数呢?
    大多数[0]
    都会给出城镇名称谢谢。此外,如果“a”元素中有一个span,如何使此代码忽略span文本?
     let As = document.querySelectorAll("a.address");
    let towns = new Map();
    for(let a of As)
    {
      let town = a.textContent.split(',')[1].trim()
      if(towns.has(town))
      {
        towns.set(town, towns.get(town)+1) 
      }
      else
      {
        towns.set(town, 1);
      }
    }
    let most = [...towns.entries()].sort((a, b) => b[1] - a[1])[0];
    if ($("a.address").length) {
                var signupText = (most);
                $(".rg-modal-signup h2").text('Keep searching ' + signupText + ' real estate.');
            } else {
                var signupText = '';
                 $(".rg-modal-signup h2").text('Keep searching for your dream home.');
            }
    
    const data = `<a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>
    <a href="/search/details/50/1/" class="address">9207 Odin Wy, Bellevue</a>
    <a href="/search/details/50/1/" class="address">9207 Odin Wy, Kirkland</a>
    <a href="/search/details/50/1/" class="address">9207 Odin Wy, Monroe</a>
    <a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>
    <a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>
    <a href="/search/details/50/1/" class="address">9207 Odin Wy, Bothell</a>`;
    
    const anchors = data.split('\n');
    
    const getName = (row) => {
        const index = row.indexOf(',');
        const commaOffset = 2;
        const suffixOffset = 4;
        const length = row.length;
        return row.substring(index + commaOffset, length - suffixOffset);
    }
    
    const names = anchors.map(getName);
    
    const counts = names.reduce((group, name) => {
        if (!group[name]) {
            group[name] = 1;
        } else {
            group[name]++;
        }
    
        return group;
    }, {});
    
    const entries = Object.entries(counts);
    const sorted = entries.sort((a, b) => b[1] - a[1])
    const hightestCount = sorted.shift();
    
    
    console.log(hightestCount)
    
    [ 'Bothell', 4 ]