如何从 JavaScript 数组中删除扩展原始字符串的字符串?

分享于2022年07月17日 algorithm arrays javascript node.js string 问答
【问题标题】:如何从 JavaScript 数组中删除扩展原始字符串的字符串?(How to remove strings which extends original string from JavaScript array?)
【发布时间】:2022-07-01 16:04:31
【问题描述】:

我有以下数组: ['total.color.violet', 'total.color.violet.truefont', 'total.color.red', 'total.color.red.circle', 'total.color.red.circle.elefant', 'total.color.blue', 'total.color.yellow', 'total.color.yellow.dotted'] 。正如我们所见,所有字符串都有常量部分 total.color 和可变部分。 我需要得到下一个结果: ['total.color.violet', 'total.color.red', 'total.color.blue', 'total.color.yellow'] - 删除复杂度超过“第三级”的字符串,只留下“第二级”复杂度的字符串。 如果可能的话,请看一下这个算法并给我任何提示。

  • 到目前为止你有什么尝试?
  • 请提供您想要的示例输出。
  • @TwittorDrive 我用一行代码添加了一个答案。希望这会有所帮助。

【解决方案1】:

一个相对简单的“点数”案例。

这里我使用正则表达式来确定字符串中 . 的出现次数。 'g' 标志返回字符串中的所有匹配项。

match 可以在不匹配的情况下返回null,所以 || [] 保证有一个长度为零的数组,这样我们就可以访问属性 length

所有带有 2 个或更少点的条目都保留在过滤后的数组中。

let values = ['total.color.violet', 'total.color.violet.truefont', 'total.color.red', 'total.color.red.circle', 'total.color.red.circle.elefant', 'total.color.blue', 'total.color.yellow', 'total.color.yellow.dotted']

const output = values
    .filter(value => (value.match(/\./g) || []).length <= 2)

console.log(output)