gpt4 book ai didi

javascript - 创建真实计数以选择最有可能的列

转载 作者:行者123 更新时间:2023-12-02 21:51:04 25 4
gpt4 key购买 nike

我正在从 Excel 文件导入数据,并尝试使用 RegEx 来查找包含我要查找的数据的列,从而从相关列中查找某些信息。然而,正则表达式并不完美,因为有时表达式会出现在多个列中。因此,为了基本上解决这个问题,我想制作某种内部计数器,该计数器将计算列具有我在集合中定义的正则表达式之一的次数。下面是发生这种情况的示例。

columnsWithDescription()
{
var refDesRegex = [/resistor/i,/capacitor/i,/res/i,/cap/i]

var refDesColumnNumber = new Set();
for (var expression of refDesRegex)
{
for (const row of this.data)
{
for (var cell = 0; cell<row.length; cell++)
{
if (expression.test(row[cell]))
{
refDesColumnNumber.add(cell)
}
}
}
}

data是已经导入的excel表格。它是一个数组的数组,其中每个数组都是 Excel 工作表的一行。

我已经尝试在结果集上使用 forEach 方法,但这会产生总体真实计数,并且不会将结果与每个列号隔离。我想对集合中的每个值运行测试,并查看与单元格索引匹配的列中的值返回 true 的次数,然后隔离该行,以便稍后将其插入数组中。

最佳答案

我想说的是:如果您有兴趣找出电子表格的哪一列与任何正则表达式最匹配,那么:

  1. 您不必单独测试每个正则表达式。您可以针对一个正则表达式进行测试,该正则表达式是各个正则表达式的“逻辑或”。
  2. 您只需记录每个列编号,即该列与正则表达式(在字典中)匹配的次数。

最后,您需要根据值对该字典的键和值进行排序,然后与最大值关联的键就是您要查找的结果。

columnsWithDescription()
{
let regex = /(resistor|capacitor|res|cap)/i;
let counts = {}; // dictionary of counts
for (let row of this.data)
{
for (var cell = 0; cell < row.length; cell++)
{
if (regex.test(row[cell]))
{
// we have a match in column # cell
if (cell in counts)
counts[cell]++; // not the first time we've had a match in this column
else
counts[cell] = 1;
}
}
}

/* the keys of the counts dictionary are the column numbers
and the values are the number of times a match was found in that column
*/
// sort the counts dictionary:
// create the items array
let items = Object.keys(counts).map(function(key) {
return [parseInt(key), counts[key]]; // the keys are actually strings
});
// sort items array in descending order based on the values:
items.sort(function(first, second) {
return second[1] - first[1];
});
return items[0][0]; // this is the column number that had the most matches
}

关于javascript - 创建真实计数以选择最有可能的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60131311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com