首页 > 解决方案 > 如何在javascript中比较两个数组或字符串?

问题描述

我从选中的复选框中选择了一个 array1,我需要与最相似的进行比较,我该怎么做?

var array1 = ["pain", "fever", "vomit"]


var array2 = ["diarrhea", "fever", "vomit", "embolism", "bleeding"]
var array3 = ["diarrhea", "tumor", "vomit", "cold", "bleeding"]

我尝试了一些方法,但它们只返回“真”或“假”,我想得到最相似的 array1

标签: javascriptarrays

解决方案


您可以使用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);


推荐阅读