gpt4 book ai didi

javascript - 比较对象数组并分配相似性分数

转载 作者:行者123 更新时间:2023-11-30 19:10:50 28 4
gpt4 key购买 nike

我正在尝试比较两个对象数组,并根据数组中的共同项目为它们分配相似度分数。

我能够比较数组,但我遇到了在对象数组上使用相同概念的问题。

let array1 = [{key1:['item1','item2','item3','item4']},{key2:['event3','event4']}];
let array2 = [{key1:['item1','item4','item2','item8']},{key2:['event4','event2']}];

let arrayA=['item1','item2','item3','item4'];
let arrayB=['item1','item4','item2','item8'];
function SimilarityPercentage(arrayA,arrayB){
let answer =arrayA.filter(function(item) {
return arrayB.indexOf(item) >= 0;
}).length
return answer/(Math.max(arrayA.length,arrayB.length))*100
}
console.log(SimilarityPercentage(arrayA,arrayB));// 75

给定 array1 和 array2 ,我希望结果拆分出一个相似度分数,类似于上面的函数。我想使用兰特指数计算:https://en.wikipedia.org/wiki/Rand_index#targetText=The%20Rand%20index%20or%20Rand,is%20the%20adjusted%20Rand%20index .

最佳答案

您可以获取值并计算共同分数。

function similarityPercentage(arrayA, arrayB) {            
return 100 * arrayA.filter(Set.prototype.has, new Set(arrayB)).length / Math.max(arrayA.length, arrayB.length);
}

function similarities(a, b) {
var parts = a.map((o, i) => similarityPercentage(Object.values(o)[0], Object.values(b[i])[0]));
return parts.reduce((a, b) => a + b, 0) / parts.length;
}

var array1 = [{ key1: ['item1', 'item2', 'item3', 'item4'] }, { key2: ['event3', 'event4'] }],
array2 = [{ key1: ['item1', 'item4', 'item2', 'item8'] }, { key2: ['event4', 'event2'] }],
arrayA = ['item1', 'item2', 'item3', 'item4'],
arrayB = ['item1', 'item4', 'item2', 'item8'];

console.log(similarityPercentage(arrayA, arrayB)); // 75
console.log(similarities(array1, array2)); // 62.5

关于javascript - 比较对象数组并分配相似性分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490921/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com