js如何从数组中匹配出和某字符串相似度最大的一项

皮卡丘UP 2019-04-28 09:45:11
js正则匹配找出数组中和目标文本字符串最相似的一项,用于复杂的模糊搜索
...全文
1966 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
stand_under_tree 2019-05-03
  • 打赏
  • 举报
回复
相似度还有算法。。。。
皮卡丘UP 2019-05-02
  • 打赏
  • 举报
回复
引用 7 楼 天际的海浪的回复:
[quote=引用 5 楼 �见贤思齐 的回复:] 有没有用js实现的方法呢,这个想在前端实现
转成js代码很容易

function levenshtein(str1,str2) {
	var len1 = str1.length;
	var len2 = str2.length;
	var arr = [];
	for (var y = 0; y <= len1; y++)
		arr[y] = [y];
	for (var x = 1; x <= len2; x++)
		arr[0][x] = x;
	for (var y = 1; y <= len1; y++)
		for (var x = 1; x <= len2; x++)
			arr[y][x] = Math.min(
				arr[y-1][x]+1,
				arr[y][x-1]+1,
				arr[y-1][x-1]+(str1[y-1]==str2[x-1]?0:1)
			);
	//console.table(arr);
	return 1 - arr[len1][len2] / Math.max(len1,len2);
}
alert(levenshtein("明天是星期六","明天是周六"));

[/quote] 厉害厉害,可以了,谢谢呀!
皮卡丘UP 2019-04-30
  • 打赏
  • 举报
回复
有没有用js实现的方法呢,这个想在前端实现
皮卡丘UP 2019-04-30
  • 打赏
  • 举报
回复
有没有用js实现的方法呢,这个想在前端实现
天际的海浪 2019-04-30
  • 打赏
  • 举报
回复
引用 5 楼 �见贤思齐 的回复:
有没有用js实现的方法呢,这个想在前端实现
转成js代码很容易

function levenshtein(str1,str2) {
	var len1 = str1.length;
	var len2 = str2.length;
	var arr = [];
	for (var y = 0; y <= len1; y++)
		arr[y] = [y];
	for (var x = 1; x <= len2; x++)
		arr[0][x] = x;
	for (var y = 1; y <= len1; y++)
		for (var x = 1; x <= len2; x++)
			arr[y][x] = Math.min(
				arr[y-1][x]+1,
				arr[y][x-1]+1,
				arr[y-1][x-1]+(str1[y-1]==str2[x-1]?0:1)
			);
	//console.table(arr);
	return 1 - arr[len1][len2] / Math.max(len1,len2);
}
alert(levenshtein("明天是星期六","明天是周六"));

天际的海浪 2019-04-29
  • 打赏
  • 举报
回复
引用 3 楼 囧 的回复:
符串符相似度算法 https://blog.csdn.net/xcxy2015/article/details/77164126
这个算法有个问题。如比较"abcdef"和"defabc"得到的结果是0相似度。毕竟计算的是编辑次数,这个最少要编辑6次才行,而字符串长度也是6。
2019-04-29
  • 打赏
  • 举报
回复
符串符相似度算法 https://blog.csdn.net/xcxy2015/article/details/77164126
皮卡丘UP 2019-04-29
  • 打赏
  • 举报
回复
是的,这里的最相似是指目标文本字符串匹配出数组里和这个目标文本字符含有相同文字最多的一项,请问这个该怎么实现?
丰云 2019-04-28
  • 打赏
  • 举报
回复
相似度,用来日常表述,是一个很好的词, 但用在计算机运算中,却非常讨厌,因为无法简单用代码描述!!! 你必须先定义好什么是相似,有那些内涵、外延以及边界,否则连代码都没法动手写!!!

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧