Javascript 如何创建按属性值检查元素的组

Javascript 如何创建按属性值检查元素的组,javascript,jquery,Javascript,Jquery,我正在尝试识别具有相同文本的多组元素。检查我是否创建了元素数据代码,其中包含用于比较的内容哈希 我想用相同的内容对不同的元素组进行分组。 例如: 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息 可以使用“代码”和“相关颜色”属性维护对象数组: var colorCode=[{代码:'5652c0bcc277bf4c039686d',颜色:'red'},{代码:'725c1424b123da

我正在尝试识别具有相同文本的多组元素。检查我是否创建了元素数据代码,其中包含用于比较的内容哈希

我想用相同的内容对不同的元素组进行分组。 例如:

名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息
可以使用“代码”和“相关颜色”属性维护对象数组:

var colorCode=[{代码:'5652c0bcc277bf4c039686d',颜色:'red'},{代码:'725c1424b123dabc3',颜色:'green'},{代码:'8cbsh7364hd94d8',颜色:'blue'}]; $'*[数据代码]'。每个函数,el{ var code=$this.datacode; var color=colorCode.findc=>c.code==code.color; $this.css'color',color; }; 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息
可以使用“代码”和“相关颜色”属性维护对象数组:

var colorCode=[{代码:'5652c0bcc277bf4c039686d',颜色:'red'},{代码:'725c1424b123dabc3',颜色:'green'},{代码:'8cbsh7364hd94d8',颜色:'blue'}]; $'*[数据代码]'。每个函数,el{ var code=$this.datacode; var color=colorCode.findc=>c.code==code.color; $this.css'color',color; }; 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息
尝试以这种方式实现代码

//js为所有数据代码生成数组 var代码列表=[]; $'*[数据代码]”。每个函数a,el{ var代码=$el.数据“代码”; codeList.pushcode; }; //Js仅从所有数据代码的数组中查找重复值 var duplicateOnly=[]; duplicateOnly=codeList.filterb,c,bb=>bb.indexOfb==c&&bb.lastIndexOfb!==C //js根据新数组长度生成随机颜色代码列表 var colorCodeList=[]; forvar代码仅重复{ 变量字母='0123456789ABCDEF'; var color=; 对于变量d=0;d<6;d++ 颜色+=字母[Math.floorMath.random*16]; colorCodeList.pushcolor; } //js将颜色应用于所有组 对于var e=0;e<0.5长度;e++{ $'*[数据代码]”。每个函数a,el{ var代码=$el.数据“代码”; 如果代码==duplicateOnly[e] $el.css{'color':colorCodeList[e]}; }; } 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息 库尔迪普 演示消息,但与所有消息不同
尝试以这种方式实现代码

//js为所有数据代码生成数组 var代码列表=[]; $'*[数据代码]”。每个函数a,el{ var代码=$el.数据“代码”; codeList.pushcode; }; //Js仅从所有数据代码的数组中查找重复值 var duplicateOnly=[]; duplicateOnly=codeList.filterb,c,bb=>bb.indexOfb==c&&bb.lastIndexOfb!==C //js根据新数组长度生成随机颜色代码列表 var colorCodeList=[]; forvar代码仅重复{ 变量字母='0123456789ABCDEF'; var color=; 对于变量d=0;d<6;d++ 颜色+=字母[Math.floorMath.random*16]; colorCodeList.pushcolor; } //js将颜色应用于所有组 对于var e=0;仅长度<重复;e++{ $'*[数据代码]”。每个函数a,el{ var代码=$el.数据“代码”; 如果代码==duplicateOnly[e] $el.css{'color':colorCodeList[e]}; }; } 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息 库尔迪普 演示消息,但与所有消息不同
注意:基于这个问题,我相信您正在服务器端创建数据代码属性。我更喜欢在HTML输出中添加类或样式的服务器端解决方案,而不是使用数据代码属性和javascript添加样式

如果您希望坚持使用javascript,那么下面是一个解决方案,它使用一个集合来创建数据代码值的唯一列表,循环遍历这些代码,并为tr el指定一个预设css颜色 包含具有匹配数据代码的td的元素。您需要在颜色数组中设置足够的项来覆盖所有唯一的内容,或者用随机颜色函数替换颜色数组

var$code=$'td[数据代码], codeSet=新集合$codes.mapfunction{return$this.data'code';}, 颜色=['ff0aaa','bbaa33','33cc33','9900ff','0000aa']; codeSet.forEachfunctioncode{ $codes.filter'td[data code='+code+']'.parent'tr[id]'.css{color:colors.shift}; }; 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息
注意:基于这个问题,我相信您正在服务器端创建数据代码属性。我更喜欢在HTML输出中添加类或样式的服务器端解决方案,而不是使用数据代码属性和javascript添加样式

如果您希望坚持使用javascript,那么这里有一个解决方案,它使用一个集合来创建数据代码值的唯一列表,循环遍历这些代码,并为包含td和匹配数据代码的tr元素指定一个预设css颜色。您需要在颜色数组中设置足够的项来覆盖所有唯一的内容,或者用随机颜色函数替换颜色数组

var$code=$'td[数据代码], codeSet=新集合$codes.mapfunction{return$this.data'code';}, 颜色=['ff0aaa','bbaa33','33cc33','9900ff','0000aa']; codeSet.forEachfunctioncode{ $codes.filter'td[data code='+code+']'.parent'tr[id]'.css{color:colors.shift}; }; 名称 消息 迈克 这是同样的信息 约翰 这是同样的信息 史蒂夫 这是相同的消息 迈克尔 这是同样的信息 阿尔弗雷多 这是相同的消息 保罗 完全不同的信息

我不明白你的问题,解释为什么第2组有第1组message@Wils对不起,这看起来很棘手。Text This is same message=组1,复数文本消息为组2。因此,您希望以相同数据代码分组显示它吗?正确@Wils。我需要确定哪些组具有相同的内容。您可以添加预期的输出吗?我仍然很困惑。我不明白你的问题,请解释为什么第2组有第1组message@Wils对不起,这看起来很棘手。Text This is same message=组1,复数文本消息为组2。因此,您希望以相同数据代码分组显示它吗?正确@Wils。我需要确定哪些组具有相同的内容。您可以添加预期的输出吗?我仍然很困惑。不知怎的,在Firefox上我得到了。查找。。。是未定义的错误。@IgorO,我在Firefox 70.0.1中进行了测试,没有发现这样的错误:不知怎的,在Firefox上我得到了.find。。。是未定义的错误。@IgorO,我在Firefox 70.0.1中测试过,没有发现这样的错误:谢谢@KuldipKoradia,你理解得很好。如果只接受重复一次以上的代码,你会怎么做?那些不重复的就不上色@KuldipKoradia@IgorO我已经根据您上次的评论对javascript代码进行了更改,现在该代码只更改了数据代码的颜色代码,而这些数据代码不止一次。嘿@IgorO,您是否在新更新代码的帮助下获得了问题的解决方案?欢迎@IgorO。谢谢@KuldipKoradia,你理解得很好。如果只接受重复一次以上的代码,你会怎么做?那些不重复的就不上色@KuldipKoradia@IgorO我已经根据你最后的评论对我的javascript代码进行了更改,现在这段代码只更改了一次以上的数据代码的颜色代码。嘿@IgorO,通过这段新更新的代码,你得到了问题的解决方案吗?欢迎@IgorO。
Name    |   Message<br>
Mike    |   This is the same message    GROUP 1 -> show button<br>
John    |   This is the same message    GROUP 1<br>
Millie  |   This is the same message    GROUP 1<br>
Steve   |   This is the same messages   GROUP 2 -> show button<br>
Michael |   This is the same message    GROUP 1<br>
Alfredo |   This is the same messages   GROUP 2<br>
Paul    |   Totally different message<br>