Javascript 获取逗号后最常见的文本字符串,用于任何用途
我想抓住下面代码中最常见的文本,在这个带有Jquery的HTML中的“,”之后。在这种情况下,文本将返回“Bothell”。我该怎么做呢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
<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>
您必须在此处执行多项操作:
你知道以后该怎么办。祝你好运 我会创建一个城镇名称计数图,然后按计数降序排序,并提取第一个元素 如果希望在链接文本中有其他要忽略的元素,可以通过克隆元素、迭代子元素并从克隆中删除每个元素来删除这些元素。使用克隆将保持页面外观不变
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 ]