【发布时间】:2021-12-27 17:28:52
【问题描述】:
我有一个要过滤的列列表,现在我正在使用这个逻辑:
for (const columnName of this.columnNames) {
const matchingColumns = fieldsForSearch.filter(c => columnName === c ||
columnName.match(c + '[ ][0-9]*$'));
if (matchingColumns && matchingColumns.length > 0) {
// do something...
}
}
这很好,但是,当我有一个巨大的数组时,它会花费很多时间,尤其是 .match 我怎样才能让它更快?使用.test 或.startsWith?
我过滤的this.columnNames 可以具有Color、Color 1、Color 2 等值。这就是我有逻辑的原因:
columnName.match(c + '[ ][0-9]*$'))
它也可以有这样的值:Age Range、Age Range Minimum、Age Range Maximum。
我想要过滤名称和数字,所以在我上面的代码中颜色,颜色 1... 通过但 Age Range Minimum 没有。
示例输入:
['Color', 'Color 1', 'Color 2', 'Color 3', 'Age Range', 'Age Range Minimum', 'Age Range Maximum']
样本输出:
['Color', 'Color 1', 'Color 2', 'Color 3']
【问题讨论】:
-
@Fadi 您要过滤多少数据,您是在前端还是后端使用 nodejs 进行尝试?
-
几千条记录,在nodejs中后端
-
令人困惑但
'(?<=Color)[ ][0-9]*$' -
@PeterSeliger - 在重读 Q 之后,如果没有 RegExp,无论如何都无法实现目标。
标签: javascript arrays regex filter match