javascript - 如何在 JavaScript 的字符串数组中有效地查找包含另一个字符串的组字符串?
问题描述
对于像这样的数组:
["abc", "bc", "dd", "d", "ee", "ff", "e"]
什么是获得的有效方法:
[["abc", "bc"],["dd", "d"],["ee", "e"]]
解释
["abc", "bc"] because "abc" contains "bc"
["dd", "d"] because "dd" contains "d"
["ee", "e"] because "ee" contains "e"
包括并行性在内的任何新方法也受到欢迎。
解决方案
您可以使用reduce()
. 检查该元素是否被其他元素包含。如果没有,则将其添加为累加器的键。如果包含,则将其添加到该数组中。最后用于Object.values()
获取值(数组)。用于filter()
删除具有length = 1
let arr = ["abc", "bc", "dd", "d", "ee", "ff", "e"]
let res = Object.values(arr.reduce((ac,a,i) => {
if(!arr.some((x,b) => x.includes(a) && i !== b)) ac[a] = [a];
else {
for(let k in ac){
if(k.includes(a)){
ac[k].push(a)
break;
}
}
}
return ac;
},{})).filter(x => x.length -1)
console.log(res)
推荐阅读
- python - 来自博彩公司的网络抓取赔率
- r - 统计按 id 分组的事件数
- javascript - 如何通过 Express 发送 React 代码?
- c# - C# 异步 TcpClient 连接
- r - R:根据多个条件填充向量
- java - HttpClient 的 HttpResponse 返回非格式化字符串
- reactjs - 如何使用反应钩子获得孩子的参考?
- google-sheets - 根据谷歌表格中的给定条件重复行 N 次
- python - 如何根据另一个观察在 scanpy 上添加观察类别?
- python - Python datetime isoformat - 从字符串计算直到 bithday 的天数 - 转换为 datetime.datetime 对象