javascript - 如何在javascript中比较两个数组或字符串?
问题描述
我从选中的复选框中选择了一个 array1,我需要与最相似的进行比较,我该怎么做?
var array1 = ["pain", "fever", "vomit"]
var array2 = ["diarrhea", "fever", "vomit", "embolism", "bleeding"]
var array3 = ["diarrhea", "tumor", "vomit", "cold", "bleeding"]
我尝试了一些方法,但它们只返回“真”或“假”,我想得到最相似的 array1
解决方案
您可以使用reduce计算相似元素的数量,然后按相似度对数组进行排序并获取第一个元素:
const array1 = ["pain", "fever", "vomit"];
const array2 = ["diarrhea", "fever", "vomit", "embolism", "bleeding"];
const array3 = ["diarrhea", "tumor", "vomit", "cold", "bleeding"];
const countSimilarElements = (arr1, arr2) => arr1.reduce((count, x) => count + arr2.includes(x), 0);
const orderBySimilarity = (arr1, ...arr) =>
arr.map(x => ({ array: x, similarity: countSimilarElements(arr1, x) }))
.sort((a, b) => b.similarity - a.similarity);
const ordered = orderBySimilarity(array1, array2, array3);
console.log(ordered);
console.log(ordered[0].array);
推荐阅读
- spring-boot - Liquibase loadData 取决于上下文
- sungridengine - Gridengine:错误:commlib 错误:得到选择错误(连接被拒绝)
- amazon-web-services - 在单行上打印数组中所有元素的键值
- javascript - 在 JavaScript 中使用“持久对象”是一种好习惯吗?
- c# - ASP.NET MVC 后模型始终为空
- elm - Array.indexedMap 类型不匹配
- javascript - 嵌套 javascript 对象中的值检查(可能不存在)
- linux - 开发必须在文件系统中导航的应用程序
- android - bluestacks 无法获取显示“PHONE_REGISTRATION_ERROR”的 Firebase 令牌
- php - Laravel - 护照/SPA 401 未经授权