Javascript 获取datatable中带有正则表达式的元素的唯一值计数

Javascript 获取datatable中带有正则表达式的元素的唯一值计数,javascript,jquery,datatable,Javascript,Jquery,Datatable,我有一个数据表,其结构如下: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tbody> <tr> <td>ABC</td> <td></td> <td id=&qu

我有一个数据表,其结构如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>ABC</td>
      <td></td>
      <td id="invNumbers0">12345</td>
      <td></td>
    </tr>
  </tbody>
  <tbody>
    <tr>
      <td>GHI</td>
      <td></td>
      <td id="invNumbers1">12345</td>
      <td></td>
    </tr>
    <tr>
      <td>MNO</td>
      <td></td>
      <td id="invNumbers2">4566</td>
      <td></td>
    </tr>
    <tr>
      <td>STU</td>
      <td></td>
      <td id="invNumbers3">12345</td>
      <td></td>
    </tr>
    <tr>
      <td>ABC</td>
      <td></td>
      <td id="invNumbers4">2566</td>
      <td></td>
    </tr>
  </tbody>
  <tbody>
    <tr>
      <td>GHI</td>
      <td></td>
      <td id="invNumbers5">4566"</td>
      <td></td>
    </tr>
    <tr>
      <td>MNO</td>
      <td></td>
      <td id="invNumbers6">12345</td>
      <td></td>
    </tr>
    <tr>
      <td>STU</td>
      <td></td>
      <td id="invNumbers7">12345</td>
      <td></td>
    </tr>
  </tbody>
</table>

基础知识
12345
GHI
12345
MNO
4566
斯图
12345
基础知识
2566
GHI
4566"
MNO
12345
斯图
12345
我想计算id从“invNumbers”开始的元素中存在的唯一值的计数。 重复的值应该只计算一次。因此,这里的输出应该是
Count=3。因为我只有3个唯一的值,即12345662566。

您可以尝试以下方法:

var arr = $('td[id^=invNumbers]').map(function() {
  return $(this).text()
}).get();
var unique = arr.filter(function(v, i, a) {
  return a.indexOf(v) === i
});
演示

var arr=$('td[id^=invNumbers]').map(函数(){
返回$(this.text())
}).get();
var unique=arr.filter(函数(v,i,a){
返回a.indexOf(v)==i
});
console.log(唯一);

基础知识
12345
GHI
12345
MNO
4566
斯图
12345
基础知识
2566
GHI
4566
MNO
12345
斯图
12345
这里有3个版本

  • 带粗箭头的ES6
  • 带功能的ES2015
  • 应该从IE8左右运行的遗留JS
const uniqueCount=[…document.queryselectoral(“td[id^=invNumbers]”)
.减少((acc,cur)=>{
const val=cur.textContent;
如果(!acc.包括(val))acc.推送(val);
返回acc;
},[])长度;
console.log(uniqueCount)
//没有胖箭头=>
const uniqueCount1=[…document.queryselectoral(“td[id^=invNumbers]”)
.减少(功能(acc、cur){
const val=cur.textContent;
如果(!acc.包括(val))acc.推送(val);
返回acc;
},[])长度;
console.log(uniqueCount1)
//传统-不是ES2015或ES6
var cells=document.querySelectorAll(“td[id^=invNumbers]”;//从IE9左右开始支持
var-arr=[];
对于(变量i=0;i

基础知识
12345
GHI
12345
MNO
4566
斯图
12345
基础知识
2566
GHI
4566
MNO
12345
斯图
12345

欢迎使用Stack Overflow!请访问,查看和。进行一些研究,搜索相关主题;如果遇到问题,请发布您的尝试,并使用
[]
代码段编辑器记录输入和预期输出。是的,它运行良好,但我可以使用“=>“接线员。我正在开发一些不支持此功能的遗留应用程序operator@Its下一行中有:var unique=arr.filter((v,i,a)=>a.indexOf(v)==i);我也更新了我的表结构并删除了值属性是的,它工作得很好,但我可以使用“=>”运算符。我正在处理一些不支持此操作的遗留应用程序。我已更新了我的代码,并从See update中删除了value属性。你在一个数字后面有一个松散的“所以计数器是4,我删除了“我添加了一个没有胖箭头的函数和一个带有遗留JavaScription的函数,你可以使用哪一个,2还是3?”?