Javascript 如何获取每个字符串的第一个实例?

Javascript 如何获取每个字符串的第一个实例?,javascript,jquery,Javascript,Jquery,jQuery中是否有一种方法可以查找包含字符串第一个实例的每个元素 <ul> <li>1</li> <-- find this <li>1</li> <li>1</li> <li>2</li> <-- find this <li>2</li> <li>3</li> <-- fi

jQuery中是否有一种方法可以查找包含字符串第一个实例的每个元素

<ul>
    <li>1</li> <-- find this
    <li>1</li>
    <li>1</li>
    <li>2</li> <-- find this
    <li>2</li>
    <li>3</li> <-- find this
    <li>3</li>
    <li>3</li>
    <li>3</li>
</ul>
一个选项是使用集合对象来跟踪目标。使用过滤器获取集合对象上未找到的所有对象

$function{ 发现的var=新集合; var firstLI=$ul>li.filterfunction{ var text=$this.text.trim; 如果!找到了{ found.addtext; 返回true; } 返回false; }; //测试 firstLI.addClassfirst; }; .首先{ 背景色:红色; } 1. 1. 1. 2. 2. 3. 3. 3. 3.
一种可能的解决方案是使用获取其文本与前一个li的文本不同的元素。注意:这个解决方案只有在列表中的字符串被排序时才能正常工作,正如您在输入示例中提供的那样

$document.readyfunction { var items=$ulList li.filterfunction { 返回$this.prev.text!==$this.text; }; items.cssbackground-color,天蓝色; }; 1. 1. 1. 2. 2. 3. 3. 3. 3. 演示:
我试着举一个简单的例子:

常量值=新集合 $li.eachidx,元素=>{ values.addelement.textContent } 对于值的let值{ $`li:包含“${value}”:first`.addClassfirst } .首先{ 颜色:红色; } 1. 1. 1. 2. 2. 3. 3. 3. 3. 您可以使用map+get返回元素的HTML数组

然后,使用[…new SetArray]将其筛选为唯一项

var elems=$ul>li.mapfunction{返回this.outerHTML}.get; $ul.html[…新设置元素]。加入\n; 1. 1. 1. 2. 2. 3. 3. 3. 3.
隐马尔可夫模型。。结果应该是什么?该元素的节点元素?或者仅仅是节点值,即像[1,2,3]这样的数组?节点元素最好的方法可能是通过节点进行迭代,并且一个存储的innerHtml数组可能与jQuery中的函数不同。如果可以的话,您可能应该重新设计构建这个HTML的部分。很棒的解决方案。喜欢使用Set。在使用Set之前,您需要检查浏览器兼容性。做同样事情的更兼容的方法是var obj={},obj[key]=true;添加一些东西到集合中,如果obj[key]检查成员资格。基于Doc,集合的基本用法甚至与IE 11兼容。。或者您也可以使用探查器来确保:在使用之前,您需要检查浏览器兼容性。。。和Set.@jnylen不确定这是针对我还是OP。OP没有指定浏览器约束,因此我认为为了Internet Explorer兼容性而预先限制我的答案是没有用的。如果是这样的话,他们可以选择不使用这个。如果列表保证被排序,那么这个就可以了。
$("ul li").each(function(){
    if ($(this).prev("li").html() != $(this).html()){
        $(this).addClass("first");
    }
});